4

我在javascript中创建了一个函数,它检查ID为#stage的div元素是否有任何子节点,如果有,它会在调用函数时删除它们。

当我启动网站时,Firebug 向我返回一个错误,如下所示: TypeError: Value not an object。

这是我的代码:在 javascript 中声明变量阶段:

var stage = document.querySelector("#stage");

给出错误的javascript函数的一部分:

if (stage.hasChildNodes()) {
    for (var f1=0; f1<ROWS * COLUMNS; f1++) {
        stage.removeChild(stage.firstChild);
    }
}

HTML 代码:

<body>
    <div id="stage">
    </div>
    <script src="code.js">
    </script>
</body>

我想删除 ID 为“stage”的子节点

请帮我解决这个问题。如果您需要有关我的问题的更多信息,请询问。谢谢。

4

2 回答 2

2

如果要删除 childNodes,while 循环更容易

var parentElement = document.getElementById('stage');
while (parentElement.hasChildNodes()) {
   parentElement.removeChild(parentElement.lastChild);
} 
于 2013-04-18T20:04:45.040 回答
2

我想,你得到了一个错误,因为你只是在运行你的 for 循环,条件与子节点计数不匹配。因此,有可能在实际上没有任何子元素的父元素中获得第一个子元素。因此,parent.FirstChild 将返回 null。实际上 parent.removechild 需要一个 DOM 对象,但您的代码将为该对象提供 null 。这可能是您的问题的一个可能原因。试试这个,

while(stage.hasChildNodes()) { 
  stage.removeChild( stage.childNodes[0] );
}
于 2013-04-18T20:07:17.673 回答