1

开门见山:

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]));
    }
}

使用此代码,我试图删除一些输入元素

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'当我尝试删除另一行时。

请帮我。如果您需要有关我的代码或其他内容的更多信息,可以询问

4

1 回答 1

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);
        }
    }
}
于 2013-04-22T14:09:09.690 回答