Как выбрать всех дочерних элементов элемента с javascript и изменить свойство CSS? - программирование
Подтвердить что ты не робот

Как выбрать всех дочерних элементов элемента с javascript и изменить свойство CSS?

Я работаю над проектом, у которого есть div с 32 детьми. Мне нужно создать раскрывающееся меню, которое изменит фон каждого div и родителя. Для других частей проекта, у которых нет детей, я использовал следующий код:

function changediv(color) {
document.getElementById('div1').style.background = color;
}

HTML:

<select>
<option onClick="changediv('#555');">Hex</option>
<option onClick="changediv('blue');">Colorname</option>
<option onClick="changediv('url(example.com/example.png)');">Image</option>
</select>

Я мог бы просто добавить другой идентификатор для каждого дочернего элемента (id1, id2, id3,...), но есть 32 ребенка, и мне не только придется добавить 32 идентификатора, но также 32 строки Javascript. Там должен быть лучший путь; каким-то образом выбирая детей или даже изменяя фактический CSS-код, который выбирает детей.

Спасибо, Ян

4b9b3361

Ответ 1

Хотя это можно сделать в одной строке с JQuery, я предполагаю, что вы не используете JQuery - в этом случае ваш код будет:

var nodes = document.getElementById('ID_of_parent').childNodes;
for(var i=0; i<nodes.length; i++) {
    if (nodes[i].nodeName.toLowerCase() == 'div') {
         nodes[i].style.background = color;
     }
}

См. http://jsfiddle.net/SxPxN/ для быстрого примера, который я создал. Нажмите "изменить" их, чтобы увидеть его в действии

Ответ 2

Попробуйте использовать ниже коды:

var nodes = document.getElementById('ID_of_parent').getElementsByTagName("div");
for(var i=0; i<nodes.length; i++) {
    nodes[i].style.background = color;
}

Ответ 3

Если существует только один родительский элемент, то мы можем использовать querySelector чтобы выбрать все дочерние элементы этого элемента.

HTML

<div class="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

JS

let children = document.querySelector(".parent");
children.style.color = "red";

Если есть больше родительских элементов, имеющих тот же класс, то мы можем использовать querySelectorAll и forEach

HTML

<div class="parent">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>
<div class="parent">
  <div>7</div>
  <div>8</div>
  <div>9</div>
</div>

JS

let children = document.querySelectorAll(".parent")
children.forEach(child => {
  child.style.color = "red";
})