removeChild(lastChild)不工作?

时间:2014-08-25 12:53:12

标签: javascript

我接受了一些关于访问和操作DOM的教程,我遇到了这个:

我有这个HTML:

<span>
    Shooting
    <img id="fallenstar" src="https://dom-tutorials.appspot.com/static/star_on.gif">
</span>

我想删除这位明星,我想出了这个解决方案:

document.getElementById("fallenstar").parentNode.removeChild(lastChild);

但是当它起作用时它不起作用:

var star = document.getElementById('fallenstar');
star.parentNode.removeChild(star);

我的问题是它们之间有什么区别。当我将document.getElementById("fallenstar")分配给变量时,为什么会这样?

3 个答案:

答案 0 :(得分:3)

变量lastChild未在任何地方定义。因此,它不能用作removeChild函数的参数。

答案 1 :(得分:3)

您必须声明lastChild。我假设是星形图像:

var lastChild = document.getElementById('fallenstar');
lastChild.parentNode.removeChild(lastChild);

fiddle

答案 2 :(得分:0)

鉴于标记:

<span>
    Shooting
    <img id="fallenstar" src="https://dom-tutorials.appspot.com/static/star_on.gif">
</span>

span元素的最后一个子节点是文本节点,而不是img元素。在所有浏览器中可靠地删除图像的方法是直接引用它:

var node = document.getElementById('fallenstar');
node.parentNode.removeChild(node);