我在javascript中创建了一个函数,用于检查ID为#stage的div元素是否有任何子节点,如果是,则在调用函数时将其删除。
当我启动网站时,Firebug会返回一个错误,如下所示: TypeError:值不是对象。
这是我的代码: javascript中的变量阶段声明:
var stage = document.querySelector("#stage");
提供错误的javascript函数的一部分:
if (stage.hasChildNodes()) {
for (var f1=0; f1<ROWS * COLUMNS; f1++) {
stage.removeChild(stage.firstChild);
}
}
HTML code:
<body>
<div id="stage">
</div>
<script src="code.js">
</script>
</body>
我想删除ID为&#34; stage&#34;
的子节点请帮我解决这个问题。如果您需要有关我的问题的更多信息,请询问。感谢。
答案 0 :(得分:2)
如果要删除childNodes,则更容易使用while循环
var parentElement = document.getElementById('stage');
while (parentElement.hasChildNodes()) {
parentElement.removeChild(parentElement.lastChild);
}
答案 1 :(得分:2)
我想,你得到一个错误,因为你只是运行你的for循环,其条件与子节点数不匹配。所以,有可能让父元素中的第一个孩子真正没有任何孩子。因此,parent.FirstChild将返回null。实际上,parent.removechild需要一个DOM对象,但是你的代码将为此提供null。这可能是你的问题的可能原因。试试这个,
while(stage.hasChildNodes()) {
stage.removeChild( stage.childNodes[0] );
}