Вернуться к уроку

Проверка существования детей

важность: 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.