【问题标题】:Javascript removeChild function returning TypeError: Value not an objectJavascript removeChild 函数返回 TypeError:值不是对象
【发布时间】:2016-08-18 15:48:34
【问题描述】:

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

当我启动网站时,Firebug 向我返回一个错误,如下所示: 类型错误:值不是对象。

这是我的代码: 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”的子节点

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

【问题讨论】:

  • 在该代码之前的某处是否有 Value 的引用?

标签: javascript html removechild


【解决方案1】:

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

var parentElement = document.getElementById('stage');
while (parentElement.hasChildNodes()) {
   parentElement.removeChild(parentElement.lastChild);
} 

【讨论】:

    【解决方案2】:

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

    while(stage.hasChildNodes()) { 
      stage.removeChild( stage.childNodes[0] );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      相关资源
      最近更新 更多