Функция Javascript removeChild возвращает TypeError: значение не является объектом

Я сделал функцию в javascript, которая проверяет, есть ли у элемента div с идентификатором #stage какие-либо дочерние узлы, и если да, то он удаляет их при вызове функции.

Когда я запускаю веб-сайт, Firebug возвращает мне ошибку, которая выглядит примерно так: TypeError: Value not a 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>

Я хочу удалить дочерние узлы с идентификатором "стадия"

Пожалуйста, помогите мне решить эту проблему. Если вам нужна дополнительная информация о моей проблеме, пожалуйста, спросите. Спасибо.


person depecheSoul    schedule 18.04.2013    source источник
comment
Есть ли ссылка с Value где-то перед этим кодом?   -  person epascarello    schedule 19.04.2013


Ответы (2)


Если вы хотите удалить дочерние узлы, используйте цикл while.

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

Я предполагаю, что вы получаете сообщение об ошибке, потому что вы просто запускаете цикл for с условием, которое не соответствует количеству дочерних узлов. Итак, есть возможность получить первый дочерний элемент в родительском элементе, у которого действительно нет дочернего элемента. Как следствие, parent.FirstChild вернет значение null. На самом деле parent.removechild нуждается в объекте DOM, но ваш код предоставит ему значение null. Это может быть возможной причиной вашей проблемы. Попробуй это,

while(stage.hasChildNodes()) { 
  stage.removeChild( stage.childNodes[0] );
}
person Rajaprabhu Aravindasamy    schedule 18.04.2013