2013-04-22 106 views
1

开门见山:NotFoundError:DOM异常8

function dell(a) { 
    var id = a.split(''); 
    var rs_array = ["nr", "ps", "aan", "des", "subs", "del"]; 
    var r_array = ["artnr", "ps", "aan", "des", "subtots", "del"]; 
    for (i = 0; i < 6; i++) //ligt aan nummer 
    { 
     var regels = document.getElementById(rs_array[i]); 
     regels.removeChild(document.getElementById(r_array[i] + id[3])); 
    } 
} 

有了这个代码,我尝试detele一些输入要素

for r = 0 to a_rows-1 step 1%> 
<tr id="regels"> 
    <td width="auto" id="nr"> 
     <input type="text" name="artid" id="artnr<%=r%>" value="<%=records(1,r)%>" size="6"> 
    </td> 
    <td id="ps"> 
     <input type="text" name="ps" id="ps<%=r%>" onfocus="this.blur()" value="<%=records(2,r)%>" size="7"> 
    </td> 
    <td id="aan"> 
     <input type="text" name="aan" id="aan<%=r%>" onkeyup="sub(this.id,this.value);count()" value="<%=records(3,r)%>" size="2"> 
    </td> 
    <td id="des"> 
     <input type="text" name="omschr" id="des<%=r%>" value="<%=records(4,r)%>" size="50"> 
    </td> 
    <td id="subs"> 
     <input type="text" name="subtots" id="subtots<%=r%>" onfocus="this.blur()" value="<%=records(5,r)%>" size="7"> 
    </td> 
    <td id="del"> 
     <div id="del<%=r%>" onclick="dell(this.id)" style="cursor:pointer;border:1px black solid;font-size:20px">-</div> 
    </td> 
</tr> 
<% next 

这都出矿的数据库。我试图通过给他们一个带有数字的ID来删除输入元素。 奇怪的是:我可以删除第一行,但之后它说:'NotFoundError: DOM Exception 8',当我尝试删除另一个。

请帮帮我。如果你需要更多关于我的代码或者其他信息,你可以这样问:

回答

2

不用硬编码父元素更容易。从原始元素参考获取父母直接:

function dell(a) { 
    var id = a.split(''); 
    var r_array = ["artnr", "ps", "aan", "des", "subtots", "del"]; 
    for (var i = 0; i < r_array.length; i++) { 
     var element = document.getElementById(r_array[i] + id[3]); 
     if (element) { 
      element.parentNode.removeChild(element); 
     } 
    } 
} 
+0

感谢您的回复,我会尝试一下。 - >非常感谢,终于得到了我想要的。谢谢!!最后一件事:你能解释一下parentNode的功能吗?为什么它现在有效? – siroj 2013-04-22 14:11:32

+0

@siroj没问题:)嗯,'parentNode'获取它的直接父 - 这是一个简单的方法,而不必硬编码或找出父元素是什么。 'removeChild'适用于儿童,所以你需要和父母和孩子一起工作,永远不要留下祖先和后代。这里有一些信息 - https://developer.mozilla.org/en-US/docs/DOM/Node.parentNode – Ian 2013-04-22 14:24:15