【发布时间】:2013-05-19 02:30:50
【问题描述】:
我有一个代码:
<ul class='mates'>
<li class='m' id='1'>Jakub</li>
<li class='f' id='2'>Vinnie</li>
<li class='m' id='3'>David</li>
</ul>
此脚本根据用户输入选择“li”元素之一:
<script>
var mates = document.getElementsByClassName('mates')[0];
for (var i=0; i< mates.childNodes.length; i++){
if(mates.children[i].innerHTML == 'Vinnie') alert("Got you! ID "+mates.children[i].id)
}
</script>
我需要删除这个元素:
<script>
var mates = document.getElementsByClassName('mates')[0];
for (var i=0; i< mates.childNodes.length; i++){
if(mates.children[i].innerHTML == 'Vinnie') {
alert("Got you! ID "+mates.children[i].id);
parent = document.getElementsByClassName('mates');
mateToDelete = mates.children[i];
parent.removeChild(mateToDelete);
}
}
</script>
这是我尝试过的几种不同方式,但总是出错,例如“无法调用未定义的方法‘removeChild’”。有什么想法吗?
【问题讨论】:
-
请注意
childNodes包括文本节点,例如换行符和缩进。也许你应该改用mates.children。 -
如果可以使用jQuery,当找到元素时,使用element.remove()
-
请注意
getElementsByClassName中的“s”,这表示它返回的是一个节点列表,而不是单个节点。因此,当您致电parent.removeChild(mateToDelete)时,您正在尝试删除列表。
标签: javascript html dom