Elepsis Eclipse
Гений
(64071)
4 года назад
Разница есть)) У элемента может быть только один прямой родитель... а дочерних элементов может быть дофига. Поэтому родитель один, а childNodes - массив. Поэтому нужно тыкать на конкретный элемент childNodes, а не на весь массив...
Есть подводный камень... childNodes собирает не только HTML-элементы, но и текстовые узлы. У вас там внутри div два переноса строки (=обычные пробелы), в итоге childNodes выдает массив из трех элементов:
["текстовый узел, 1 пробел", "элемент с id='qw' ", "третий текстовый - пробел"];
Так делать не безопасно, если у вас не железобетонный HTML, который гарантированно не будет меняться.
В вашем варианте кода сработает такая строчка:
sd[1].style.color = "green";
А лучше
var sd = element.children;
sd[0].style.color = "green";
children собирает только HTML-элементы, игнорируя тексты.
RinbyУченик (11)
4 года назад
Спасибо большое, очень подробно и доступно! Теперь многое стало понятней.