我有这段代码:
这是addOptions函数
<script>
var values = <?php
$sql="SELECT * FROM billing_sagenominalcodes order by code ASC";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$nominalcodes = array();
while($result=mysql_fetch_assoc($rs))
{
$nominalcodes[] = $result['code'];
}
echo json_encode($nominalcodes);
?>;
var names = <?php
$sql="SELECT * FROM billing_sagenominalcodes order by code ASC";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$nominalcodesname = array();
while($result=mysql_fetch_assoc($rs))
{
$nominalcodesname[] = $result['code'] . ' - ' . $result['name'];
}
echo json_encode($nominalcodesname);
?>;
function addOptions(select, values)
{
for (var i=0, iLen=values.length; i<iLen; i++)
{
select.appendChild(new Option(names[i],values[i]));
}
}
</script>
然后添加行功能
<script language="javascript" type="text/javascript">
var i=1;
function addRow()
{
var tbl = document.getElementById('table1');
var lastRow = tbl.rows.length;
var iteration = lastRow - 1;
var row = tbl.insertRow(lastRow);
var sagenominalcodeCell = row.insertCell(3);
var elSageNominalCode = document.createElement('select');
elSageNominalCode.type = 'select';
elSageNominalCode.name = 'sagenominalcode' + i;
elSageNominalCode.id = 'sagenominalcode' + i;
sagenominalcodeCell.appendChild(elSageNominalCode);
i++;
}
</script>
然后是HTML
<select name="sagenominalcode" id="sagenominalcode">
<script>addOptions(document.getElementById('sagenominalcode'), values);</script>
</select>
<input type="button" value="Add" onclick="addRow();" />
它添加了新的行,但是没有使用addOptions函数填充选择菜单。
有没有办法让它在动态创建新的行/选择菜单后运行该函数,然后在调用addRow函数时创建的所有其他函数相同?
答案 0 :(得分:1)
所以,更多地阅读你的代码,我看到你有
new Option(names[i],values[i])
我的问题是new Option
返回的是什么?我在你的问题的任何地方都没有看到它的代码。
看看appendChild的规范:
https://developer.mozilla.org/en-US/docs/DOM/Node.appendChild
需要传入element
。您要做的是使用createElement()
函数创建一个新元素,如下所示:
var option = document.createElement("option");
然后编辑内部html就像你需要的那样:
option.innerHTML =“您的选项内容在这里”;
然后将元素传递给append子函数:
的appendChild(可选);
在这里使用jQuery而不是直接js。我敢打赌,你的点击监听器只能绑定到创建页面时出现的项目。如果你通过jQuery设置一个监听器,那么它甚至会触发动态添加的组件。
同样从代码结构的角度来看,使用php编写js要非常小心。虽然这听起来很有趣(比如在高中时吸毒),但它很危险,令人沮丧并导致不稳定的代码(就像在高中时做毒品一样)。