2016-06-25 11 views
-2

Ich habe einige PHP-Code in script-Tag.Aber ich bekomme einen Fehler für einige meiner Zeilen.Kann nicht herausfinden, warum es Fehler gibt.was könnte der Grund für diesen Syntaxfehler sein

SyntaxError: missing ; before statement

<script> 
var item_container=document.getElementById('item-container'); 
<?php if(isset($item_count)){ ?> 
    var item_count=<?php echo $item_count; }?>; 
var no_of_column=Math.ceil(item_count/3); 
var item_container_width=item_container.offsetWidth; 
var each_column_width=(item_container_width/no_of_column)-3+'px'; 
for(i=0;i<no_of_column;i++){ 

     var column_div="<div style='border:1px solid red;height:100%;width:"+each_column_width+";float:left;position:relative;'></div>"; 

     item_container.innerHTML+=column_div; 
} 

<?php if(isset($items)){ foreach($items as $item){?> 

     item_container.firstChild.innerHTML+="<input type='checkbox' name='item' value='item1'>"+<?php echo $item->Item_Type; ?>+"</br>"; 

<?php 
     } 
    } 
?> 
</script> 

wenn ich weglassen die folgenden Zeilen der Fehler verschwunden ist.

<?php if(isset($items)){ foreach($items as $item){?> 

      item_container.firstChild.innerHTML+="<input type='checkbox' name='item' value='item1'>"+<?php echo $item->Item_Type; ?>+"</br>"; 

    <?php 
      } 
     } 
    ?> 
+0

auch den Fehler angeben. –

+0

Warum sind Ihre js und php zusammen in ''? irgendwie neugierig –

+1

du mischst php und js viel zeit und vermasselt komplett –

Antwort

0

Ich habe eine solution.It gefunden wird jede Zeile Wert in einem Literal Objekt zuweisen und dann das Objekt durchquert, und ihre Eigenschaftswerte zu einem Kontrollkästchen zuweisen.

var item_container=document.getElementById('item-container'); 
    <?php if(isset($item_count)){ ?> 
    var item_count=<?php echo $item_count; }?>; 
    var no_of_column=Math.ceil(item_count/3); 
    var item_container_width=item_container.offsetWidth; 
    var each_column_width=(item_container_width/no_of_column)-3+'px'; 
    for(i=0;i<no_of_column;i++){ 

     var column_div="<div style='height:100%;width:"+each_column_width+";float:left;position:relative;'></div>"; 

     item_container.innerHTML+=column_div; 
    } 

     var array_holder=[]; 
     <?php if(isset($items)){foreach($items as $item){?> 
       var obj={ 
        id :"<?php echo $item->Type_id; ?>", 
        item:"<?php echo $item->Item_Type; ?>" 

       }; 
       array_holder.push(obj); 
     <?php 
        } 
       } 
     ?> 

     var only_divs=item_container.getElementsByTagName('div'); 
     var array_counter=0; 
     var column_index=0; 
     array_holder.forEach(function(element,index,array){ 

      if(array_counter<3){ 
        only_divs[column_index].innerHTML+= "<li style='margin-left:5px;margin-top:3px;'><input type='checkbox' style='outline:1px solid blue;' name='item' value='"+element.id+"'>"+element.item+"</li></br>"; 

        array_counter++; 
      }else{ 
       column_index++; 
       only_divs[column_index].innerHTML+= "<li style='margin-left:5px;margin-top:3px;'><input type='checkbox' style='outline:1px solid blue;' name='item' value='item1'>"+element.item+"</li></br>"; 
       array_counter=0; 
      } 
     }); 

     only_divs[0].innerHTML+= "<li style='margin-left:5px;margin-top:3px;'><input type='checkbox' style='outline:1px solid blue;' name='item' value='0'>other</li></br>"; 
1

Wenn $item->Item_Type ein String-Wert ist dann das Problem (oder ein Problem) ist, dass Sie es sind verketten ohne Anführungszeichen zu setzen. Also, wenn der Typ ist, sagen "red thing", der Code der Browser sieht, ist:

item_container.firstChild.innerHTML+= 
    "<input type='checkbox' name='item' value='item1'>"+red thing+"</br>"; 

... was natürlich ein Syntaxfehler, weil red keine Variable ist und auch wenn es konnte man damals nicht haben Sie einfach thing ohne ein Semikolon zuerst.

sollten Sie in der Lage sein einzubetten nur, dass PHP direkt im String echo:

item_container.firstChild.innerHTML+= 
    "<input type='checkbox' name='item' value='item1'><?php echo $item->Item_Type; ?></br>"; 

// note that the "+ and +" is gone from here ------^-------------------------------^ 
0

Wenn kein dynamischer Code ist in der PHP erzeugt Frieden ausgeführt werden, können Sie einfach direkt die Zeichenfolge einfügen. Sie sollten jedoch umgekehrte Schrägstriche und doppelte Anführungszeichen vermeiden, da Ihr JavaScript-Code doppelte Anführungszeichen als Trennzeichen verwendet und Backslashes in JavaScript-Strings als Escape-Code für das nachfolgende Zeichen betrachtet werden.

item_container.firstChild.innerHTML+="<input type='checkbox' name='item' value='item1'><?php echo str_replace([ '\\', '"'], [ '\\\\', '\\"'], $item->Item_Type); ?></br>"; 
Verwandte Themen