2013-04-20 103 views
0

我有下面的代码,我不断收到这个错误在Opera的问题:删除子节点错误

Uncaught exception: DOMException: NOT_FOUND_ERR 

这在Chrome:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 

此消息指removeInput功能:

function addInput() { 
    var div = document.createElement("div"); 
    var txt = "<div>Upload image: <input type='file' name='slika[]' /> <span onclick='removeInput(this.parentNode)' />Remove <img src='catalog/remove_icon.png' /></span></div>"; 
    div.innerHTML = txt; 
    document.getElementById('text').appendChild(div); 
} 

function removeInput(el) { 
    document.getElementById('text').removeChild(el); 
} 

问题是:如何删除由addInput函数创建的元素previosly?这是删除动态元素的正确方法吗?

+0

看功能addInput(如果是这样的事情,你问我)。 – SomeoneS 2013-04-20 20:52:08

回答

1

el.parentNode.removeChild(el);

+0

是的,那就是解决方案。 – SomeoneS 2013-04-20 20:57:41

+0

所以我会很高兴得到标记然后^^ – Adidi 2013-04-21 07:49:44

+0

哦,当然,我没有时间等待(有2分钟,直到我可以标记答案为正确),现在它被标记:) Tnx! – SomeoneS 2013-04-21 09:45:43

0

首先:您不需要在innerHTML中编写“<div>”,因为createElement默认会创建“<div></div>”。

为第二:如果你想删除最后插入的元素,你需要插入后,将其保存在全局变量

var lastInserted = null; 
function addInput() { 
    var div = document.createElement("div"); 
    var txt = "Upload image: <input type='file' name='slika[]' /> <span onclick='removeInput(this.parentNode)' />Remove <img src='catalog/remove_icon.png' /></span>"; 
    div.innerHTML = txt; 
    document.getElementById('text').appendChild(div); 
    lastInserted = div; 
} 

function removeInput() { 
    if(!lastInserted)return; 
    document.getElementById('text').removeChild(lastInserted); 
} 
+0

不只是最后一个插入的元素,而是任何插入的元素。 – SomeoneS 2013-04-20 20:53:27

+1

好的,错误的原因是:** el **有错误的参考 – Ozerich 2013-04-20 20:55:05