动态生成的<select>未显示有序列表中的第一项</select>

时间:2013-11-22 19:20:22

标签: javascript php

我在使用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时,它会生成带选项的新选择,但第一项缺失(第一项显示的是“该有序列表中的第二项”)。

生成新选择的错误在哪里,请不显示有序列表中的第一项?

2 个答案:

答案 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> \";