4

#stage の ID を持つ div 要素に子ノードがあるかどうかを確認する関数を javascript で作成しました。

Web サイトを起動すると、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が「ステージ」の子ノードを削除したい

この問題を解決するのを手伝ってください。私の問題についてさらに情報が必要な場合は、お問い合わせください。ありがとう。

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 に答える