Проблема в использовании javascript childNodes.length свойство с элементом - PullRequest
1 голос
/ 18 декабря 2009

У меня есть дерево с функцией перетаскивания. После завершения перетаскивания мне нужно найти количество дочерних узлов нового родительского узла. Так что для этого я использую следующее линии

var childnodelength=elem.parentNode.parentNode.childNodes.length;

alert(childnodelength);

Но я всегда получаю одно и то же значение 4 независимо от того, нет. детей с вышеуказанным предупреждением. Я также пытался следующим образом.

alert(elem.getElementsByTagName("A")[0].childNodes.length);

Выше строки всегда дает мне 1, независимо от того, нет. детей. Я не уверен, правильно ли я обращаюсь в обоих направлениях.

И поэтому я не могу найти нет. дочерних узлов.

Пожалуйста, кто-нибудь может мне помочь с этим?

Спасибо

Ответы [ 2 ]

1 голос
/ 20 января 2010

Имейте в виду, что 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.

0 голосов
/ 18 декабря 2009

Возможно, дочерним узлом является DIV или Table, который оборачивает узлы, которые вам нужно сосчитать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...