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