创建表单元素时发生Javascript错误
错误: 未捕获异常:[异常…”组件返回故障代码:0x80004003(NS_错误\u无效指针)[nsIDOMHTMLSelectElement.appendChild]“nsresult:“0x80004003(NS_错误\u无效指针)”位置:“JS帧:::::行104”数据:否] 该代码旨在创建: textboxt-textbox-textbox-pulldown-textbox 下面是代码创建表单元素时发生Javascript错误,javascript,forms,Javascript,Forms,错误: 未捕获异常:[异常…”组件返回故障代码:0x80004003(NS_错误\u无效指针)[nsIDOMHTMLSelectElement.appendChild]“nsresult:“0x80004003(NS_错误\u无效指针)”位置:“JS帧:::::行104”数据:否] 该代码旨在创建: textboxt-textbox-textbox-pulldown-textbox 下面是代码 <script type="text/javascript"> <!-- var
<script type="text/javascript">
<!--
var ta=new Array();
var n=15;
window.onload=function()
{
inp=document.getElementsByTagName('input');
for(c=0;c<inp.length;c++)
{
if(inp[c].value=='add')
{
inp[c].onclick=function()
{
var ta = [];
var n = 15;
ta[n]=document.createElement('input');
ta[n].setAttribute('rows',1);
ta[n].setAttribute('cols',20);
ta[n].name='time'+n;
document.getElementById('txtara').appendChild(ta[n])
ta[n]=document.createElement('input');
ta[n].setAttribute('rows',1);
ta[n].setAttribute('cols',20);
ta[n].name='event'+n;
document.getElementById('txtara').appendChild(ta[n])
ta[n]=document.createElement('input');
ta[n].setAttribute('rows',1);
ta[n].setAttribute('cols',20);
ta[n].name='supplies'+n;
document.getElementById('txtara').appendChild(ta[n])
var sel = document.createElement('select');
ta[n]=document.createElement('option');
ta[n].value = 'YES';
ta[n].name='success'+n;
ta[n].innerHTML = ta[n].value;
n++;
ta[n]=document.createElement('option');
ta[n].value = 'NO';
ta[n].name='success'+n;
ta[n].innerHTML = ta[n].value;
n++;
sel.appendChild(ta[0]);
sel.appendChild(ta[1]);
document.getElementById('txtara').appendChild(sel);
document.getElementById('here').appendChild(sel);
document.getElementById('txtara').appendChild(ta[n])
n++;
}
}
}
}
//-->
</script>
您的代码正在创建节点并将它们存储在
ta[15]
和ta[16]
中,但您正在将ta[0]
和ta[1]
中的节点插入到DOM中,而这些节点并不存在
do
var n=0
;不是n=15
谢谢,我从n=15开始,因为我使用php创建了14行,如果没有足够的内容供用户使用,我希望javascript在此基础上扩展。那我该怎么办?不管怎样。。。看看工作流程。您可以创建两个新节点,其中ta[n]=document.create…,此时n是15和16。但是,您需要执行sel.appendChild(ta[0])
,这在javascript中是不存在的。文档中的某个地方可能有等效的节点,但它们根本没有链接到您的代码中,因此您实际上是在尝试sel.appendChild(null)
。那么我应该如何修复它以使sel.appendChild(ta[n])?为什么您甚至使用数组来保存新节点?您可以只做varx=doc.CreateEle(…);sel.appendChild(x)
不使用数组。对每个节点重新使用x
不会杀死以前创建的节点,只要在创建新节点和重新使用x之前每次都执行appendChild()。好的,我已经取得了一些进展,但是现在我在正确显示下拉菜单方面遇到了问题这是源代码:code
否