据我所知,
remove()
IE中不支持功能。我有一个JS函数,创建一个div并将其追加到现有的列表。div包含另一个div样式为按钮(这是标题中的"项目",这就是我从HTML中得到它时所说的),其中,点击,从DOM(通过remove()
)中删除其parentNode(以及因此本身),尽管它仍然"存在"在JavaScript中可以读取它的数据和东西。我需要一种方法从DOM中删除它,以及它的所有子元素。将它的innerHTML设置为0是行不通的,将它的display设置为none也是行不通的。任何想法如何做到这一点与IE兼容的方式?
请不要使用jQuery或其他框架
任何时候你要使用.remove()
,你总是可以使用.removeChild()
,而不是稍微不同的代码。
所以,如果你想删除一个给定节点的父节点:
item.parentElement.remove();
那么,你可以这样做:
var p = item.parentNode;
p.parentNode.removeChild(p);
如果你想把它放在一个实用函数中,你可以这样做:
function removeNode(node) {
node.parentNode.removechild(node);
}
在您的情况下,您可以这样称呼它,而不是item.parentElement.remove()
:
removeNode(item.parentNode);
注意,我使用parentNode
而不是parentElement
,因为您似乎希望IE与旧版本的IE兼容。parentNode
和parentElement
并不完全相同,但parentNode
与parentElement
不同的情况非常罕见(事实上,我无法想象在正常DOM中不适合使用parentNode
的情况)。请参阅DOM parentNode和parentElement之间的区别,了解它们之间的区别。