Shull
@Shull
хочу быть хорошим IT-шником

Почему так странно нумеруются childNodes в DOM-навигации?

Цель - нужно выбрать потомков тега, по которому кликаешь DOM-средствами. Никаких jQuery.
Однако, вместо [0],[1],[2] и тд., идёт нумерация [1],[3],[5].
Почему такая странная нумерация?

ссылка на страничку с кодом

<div id='row'>
    <div class='col-tm'>apple</div>
    <div class='col-tm'>banana</div>
    <div class='col-tm'>cranberry</div>
</div>
<hr>
<div id="result"></div>

var result = document.getElementById('result');//DIV id="result" для вывода результатов 
var first_column = document.getElementById('row');//DIV id="row" для выбора значений

var elem_apple=first_column.childNodes[1];//Выбираем "apple"
var elem_banana=first_column.childNodes[3];//Выбираем "banana"
var elem_cranberry=first_column.childNodes[5];//Выбираем "cranberry"

first_column.onclick = function(){//событие клика
    result.innerHTML=elem_apple.innerHTML+" "+elem_banana.innerHTML+" "+elem_cranberry.innerHTML;
};
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@DanKud
Потому что childNodes это не только дочерние тэги внутри элемента. Это и текст внутри элемента. В вашем случае каждый перенос строки это отдельная нода. Если сделать так, то будет как вы хотите:

<div id='row'><div class='col-tm'>apple</div><div class='col-tm'>banana</div><div class='col-tm'>cranberry</div></div>

Для получения HTMLCollection есть метод children и тогда текст без тэгов внутри элемента учитываться не будет:

var elem_apple = first_column.children[0];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@SinGlEBW
function searchTagName(childNodes){
for(var x = 0; x < childNodes.length; x++){
if(childNodes[x].nodeName == childNodes[2].nodeName){
console.log(childNodes[x]);
}}}

searchTagName(parent.childNodes);
Я тоже чё то не понял в чём соль этих участков якобы с контентом тегов. Присваивая текст тегу он отображается. Присваивая текст элементам #TEXT нигде не отображается.
Вообщем слепил условия на для тега p.
childNodes[x].nodeName == "p" - такая комбинация не катит
5dd9dee655ee5716591040.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы