我在使用JavaScript时遇到动态生成字段的问题。
我有这段代码:
$goods="SELECT * FROM goods ORDER BY name";
$options = "";
$vys = mysqli_query($db, $goods);
while ($arr= mysqli_fetch_assoc($vys)) {
$options .= "<option value='".$arr['id_good']."'>".$arr['name']."</option>";
}
echo "
<script type=\"text/javascript\">
function addInput(divName){
var newdiv = document.createElement('div');
newdiv.innerHTML = \"<select name=idg[]><?php echo $options; ?></select> \";
document.getElementById(divName).appendChild(newdiv);
}
</script>
<form method='post'>
<fieldset>
<div id='dynamicInput'><div>
<select name=idg[]>
$options
</select><br />
</div></div>
<input type='button' value='Add another select' onClick=\"addInput('dynamicInput'); \">
</fieldset>
</form>
首先选择是好的,但是每个其他(生成的)都显示没有第一个项目的选项列表。我不知道为什么,但是每当我点击Add another select时,它会生成带选项的新选择,但第一项缺失(第一项显示的是“该有序列表中的第二项”)。
生成新选择的错误在哪里,请不显示有序列表中的第一项?
答案 0 :(得分:1)
您正尝试在<?php ?>
语句中使用echo
标记。它们在字符串上下文中没有特殊含义 - 它不是必需的,会弄乱HTML标记。
newdiv.innerHTML = \"<select name=idg[]><?php echo $options; ?></select> \";
应更改为:
newdiv.innerHTML = \"<select name=idg[]>$options</select> \";
修改后的代码如下所示:
<script type=\"text/javascript\">
function addInput(divName){
var newdiv = document.createElement('div');
newdiv.innerHTML = \"<select name=idg[]>$options</select> \";
document.getElementById(divName).appendChild(newdiv);
}
</script>
答案 1 :(得分:0)
使用
时,正确的答案是错误的newdiv.innerHTML = \"<select name=idg[]><?php echo $options; ?></select> \";
而不是这个,正确的代码:
newdiv.innerHTML = \"<select name=idg[]>$options</select> \";