Javascript removeChild функция, возвращающая TypeError: значение не объект

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

Когда я запускаю веб-сайт, 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 код:

<body>
    <div id="stage">
    </div>
    <script src="code.js">
    </script>
</body>

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

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

2 ответа

Решение

Если вы хотите удалить childNodes, цикл while проще

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

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

while(stage.hasChildNodes()) { 
  stage.removeChild( stage.childNodes[0] );
}
Другие вопросы по тегам