2016-12-01 9 views
0

Я знаю основы JS, но я хотел бы сделать следующий шаг.Читайте в большом количестве элементов из DOM

Я хотел бы сменить CSS с помощью JS на множество элементов. Проблема заключается в том, что единственный метод, который я знаю, чтобы выбрать элементы является

const name = document.getElement...(id/class/tag etc.); 

Так что я могу в дальнейшем обращаться к этому элементу по его имени и изменить свой стиль с помощью:

name.style.cssproperty = "something"; 

И это хорошо , но когда у меня уже есть 10 элементов, я чувствую, что это очень неэффективно.

Так что мой вопрос, есть ли лучший способ более эффективно изменить CSS динамически, так что начало моего кода не выглядеть следующим образом:

const name = document.getElement...(id/class/tag etc.); 
const name = document.getElement...(id/class/tag etc.); 
const name = document.getElement...(id/class/tag etc.); 
const name = document.getElement...(id/class/tag etc.); 
const name = document.getElement...(id/class/tag etc.); 
etc... 

Или это нормально, чтобы иметь так много переменных ?

Надеюсь, мой вопрос можно понять.

PS:

Я только начал изучать Modular JavaScript! Это какая-то помощь моей проблеме?

+1

Возможно, вы захотите использовать: массивы, объекты, for-loops и 'document.querySelectorAll'. Что все сказано, вы также, вероятно, хотите избежать модификации «стиля» в максимально возможной степени в пользу просто переключений классов. – zzzzBov

+0

Какова природа css, которую вы пытаетесь изменить? Все ли это очень похожие преобразования? Как сказал @zzzzBov, лучший способ сделать это - использовать классы, которые вы сделали в своих таблицах стилей. –

+0

Например, см. Эту ссылку о том, как получить несколько элементов по имени класса, а затем фильтровать полученный массив по произвольным критериям https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName – user44

ответ

0

Вы можете получить все элементы с помощью данного класса:

const elements = document.querySelectorAll('my-class'); 

Теперь вы можете перебрать принесенных элементов:

for (var i = 0; i < elements.length; i++) { 
    elements[i].style.cssproperty = "something"; 
} 

Или, если ES6 + доступен в вашей среде:

elements.forEach(element => element.style.cssproperty = "something");