我在脚本标签中有一些PHP代码。但是我的一些行收到错误。但是没有弄清楚它为什么会出错。
SyntaxError:missing;在陈述之前
<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>
如果我省略以下行,则错误消失。
<?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 :(得分:1)
如果Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.
C:\Users\Documents\Android SDK\android-sdk-windows\build-tools\24.0.0\aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I "C:/Users/Documents/Android SDK/android-sdk-windows\platforms\android-24\android.jar" -F bin/resources.ap_
stderr[]
stdout[]
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi,
UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.PostProcessAndroidPlayer.Exec (System.String command, System.String args, System.String workingdir, System.String[] progress_strings, Single progress_value, System.String errorMsg)
UnityEditor.Android.PostProcessAndroidPlayer.CompileResources (System.String stagingArea, System.String packageName, UnityEditor.Android.AndroidLibraries androidLibraries)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcessInternal (System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
UnityEditor.HostView:OnGUI()
是一个字符串值,那么问题(或一个问题)就是你连接它而不加引号。因此,如果类型为$item->Item_Type
,则浏览器看到的代码为:
"red thing"
...这当然是一个语法错误,因为item_container.firstChild.innerHTML+=
"<input type='checkbox' name='item' value='item1'>"+red thing+"</br>";
不是一个变量,即使它不是,你也不能只有red
而没有分号。
您应该能够直接在字符串中嵌入PHP回显:
thing
答案 1 :(得分:0)
如果在PHP生成的和平中没有要执行的动态代码,您可以直接插入字符串。但是,您应该转义反斜杠和双引号,因为您的JavaScript代码确实使用双引号作为分隔符,JavaScript字符串中的反斜杠被视为后续字符的转义码。
item_container.firstChild.innerHTML+="<input type='checkbox' name='item' value='item1'><?php echo str_replace([ '\\', '"'], [ '\\\\', '\\"'], $item->Item_Type); ?></br>";
答案 2 :(得分:0)
我找到了一个解决方案。它在对象文字中分配每个行值,然后遍历该对象并将其属性值分配给复选框。
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>";