我想获得具有可变数量字段的选择表单。为了实现这一点,我首先连接到db并将数据从php转换为javascript。然后我得到数组(wynik)的值,但当我尝试打印它时,我得到空的选择形式和旁边显示的所有值。有我的javascript函数:
<script language="javascript">
function addInput() {
document.getElementById('text').innerHTML += "<select name='add' /><br />";
for (i=0;i<wynik.length;i++)
{
document.getElementById('text').innerHTML += "<option value=" + "wynik[i]" + " />" + wynik[i] + "</option />";
}
document.getElementById('text').innerHTML += "</select />";
}
</script>
和HTML代码:
<form name="add" action="add_form.php" method="post">
<div id="text">
</div>
<br>
<input type="submit" value="Submit" />
</form>
<input type="button" onclick="addInput()" name="add" value="Add value" />
请帮我把它变成表格。
答案 0 :(得分:2)
每次向其编写HTML时,浏览器都会尝试修复DOM,因此您无法将只是的开始标记写入innerHTML
。
在字符串中构建所有HTML,然后一次性插入。
更好的是,请改用createElement
,appendChild
和朋友。
答案 1 :(得分:0)
也许您需要在<br />
之后删除<select name='add' />
。此外</select />
最终不需要/(它在开头就有了) - </select>
。
答案 2 :(得分:-1)
您可以尝试使用ajax的另一种方法:
<!-- Script -->
<script type="text/javascript">
$(function(){
$("#add").on('click', function(){
$.ajax({
url : 'ajax.php',
type : 'POST',
success : function(resp){
$("#backend").html(resp);
},
error : function(resp){
}
});
});
});
</script>
<!-- HTML -->
<div id="text"><select id="backend" name=""></select></div>
<input type="button" id="add" value="Add value" />
<!-- Backend ajax.php -->
<?php
#your query here to fetch $wynik
$str = "";
foreach($wynik as $value){
$str .= '<option value="'.$value.'">'.$value.'</option>';
}
return $str;