Имейте в виду, что childNodes
смотрит только на один уровень вниз, поэтому значение будет таким же, если у вас одинаковое количество непосредственных детей. Возможно, вы хотели сосчитать всех детей до самого дерева?
Если вам нужны все дочерние элементы, вы можете использовать getElementsByTagName("*")
. Обратите внимание, что использование аргумента "*"
не работает в IE5.5, что также может создавать проблемы для более поздних версий IE при работе в режиме причуд.
Еще одна полезная информация о childNodes.length
заключается в том, что она может возвращать в IE другое значение, чем в других браузерах, из-за различных способов подсчета текстовых узлов. , , Если вы хотите исключить текстовые узлы и только считать элементы, вы можете просмотреть циклы childNodes и проверить значение nodeType (1 = ELEMENT_NODE, 2 = ATTRIBUTE_NODE, 3 = TEXT_NODE и т. Д.) Вы также можете использовать children
вместо childNodes
если вам нужны только узлы элементов, но в IE это неправильно подсчитывает узлы комментариев, а в Firefox это не поддерживалось до версии 3.5.