Javascript removeChild函数返回TypeError:值不是对象

时间:2013-04-18 19:59:42

标签: javascript html removechild

我在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;

的子节点

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

2 个答案:

答案 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] );
}