Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > как получить элементы по классу?


Автор: Fubu_By 19.2.2010, 17:21
как можно получить элементы с определённым классом?

Автор: bars80080 19.2.2010, 17:25
с какой целью, прежде всего надо спросить


в крайнем случае перебрать все элементы и проверить класс. для всего DOM это делать конечно не надо, но вопрос обычно касается определённых элементов в какой-то группе. допустим некоторые <p> в пределах одного <div>

Автор: Fubu_By 19.2.2010, 18:19
да да да. есть div а в нём другие дивы с классом "div-1" и вот мне надо получить их чтобы изменить свойства

Автор: bars80080 19.2.2010, 20:44
Код

var papa = document.getElementById('id главного дива');
var el = papa.getElementsByTagName('div');
var ell = el.length;
for var i = 0; i < ell; i++) {
    if(el[i].className != 'div-1') { continue; }

    // тут все действия с нашими дивами el[i]

}


наверно, на jquery это делается в два движения. но по сути тоже самое

Автор: IDVsbruck 20.2.2010, 04:15
Маленькая поправка:
допустим, есть несколько элементов, у одного атрибут class="div-1", а у другого - class="div-1 red". Исходя из логики, мы должны найти оба элемента и заменить нужные параметры. Однако проверка
Код
if(el[i].className != 'div-1') { continue; }

выберет только первый элемент. Поэтому выбирать надо не сравнением, а проверкой регулярки.

Автор: iluvatar 23.2.2010, 12:23
используя jquery получим массив
$('.div-1')

Автор: IDVsbruck 23.2.2010, 23:32
100% и удобнее, но вопрос не в той подтеме

Автор: Любитель 23.2.2010, 23:59
Ну так, к слову - везде кроме ИЕ есть getElementsByClassName. В ИЕ8 есть querySelectorAll. Само собой это будет (при достаточно большом количестве элементов) работать быстрее. В случае ие7 и < - да, только полный перебор, по возможности с ограничением по тегу.

Но на самом деле, я всё-таки не понимаю - почему бы не использовать готовый движок селекторов? Если предполагается достаточно много манипуляций с ДОМ-ом, то это оч сильно поможет, да и работать будет быстрее, а кода меньше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)