Проверка существования детей
важность: 5
Придумайте самый короткий код для проверки, пуст ли элемент elem
.
«Пустой» – значит нет дочерних узлов, даже текстовых.
if (/*...ваш код проверки elem... */) { узел elem пуст }
Что написать в условии if
?
Вначале нерабочие способы, которые могут прийти на ум:
if (!elem) { .. }
Это не работает, так как elem
всегда есть, и является объектом. Так что проверка if (elem)
всегда верна, вне зависимости от того, есть ли у elem
потомки.
if (!elem.childNodes) { ... }
Тоже не работает, так как псевдо-массив childNodes
всегда существует. Он может быть пуст или непуст, но он всегда является объектом, так что проверка if (elem.childNodes)
всегда верна.
Несколько рабочих способов:
if (!elem.childNodes.length) { ... }
if (!elem.firstChild) { ... }
if (!elem.lastChild) { ... }
Также существует метод hasChildNodes, который позволяет вызовом elem.hasChildNodes()
определить наличие детей. Он работает так же, как проверка elem.childNodes.length != 0
.