Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как изменить css свойсво нескольких елементов? (https://javascript.ru/forum/misc/20591-kak-izmenit-css-svojjsvo-neskolkikh-elementov.html)

IIIgun 10.08.2011 16:46

как изменить css свойсво нескольких елементов?
 
Есть проблема, имееться несколько тегов <a> с одинаковым идом, нужно изменить свойства ссылок при наступлении какого-то события, пытался изменить через document.getElementById(), меняет стиль только первого тега <a>, есть ли способ изменить стиль всех ссылок сразу?

ksa 10.08.2011 16:54

Цитата:

Сообщение от IIIgun
имееться несколько тегов <a> с одинаковым идом

Это уже неправильно. ИД должно быть уникально в пределах страницы...

Цитата:

Сообщение от IIIgun
есть ли способ изменить стиль всех ссылок сразу?

Да. :yes:

devote 10.08.2011 18:00

var a = document.getElementsByTagName('a');
for( var i in a ) {
   a[ i ].className = 'newcssstyle';
}

monolithed 10.08.2011 18:27

devote,
не нужно так делать :nono:

<ul id="ul">
   <li>1</li>
   <li>2</li>
</ul>

<script>
var li = document.getElementById('ul').children, i = li.length;
while(i--) {
     li[i].style.color = 'red';
}
</script>
почему?

e1f 10.08.2011 18:31

Цитата:

Сообщение от monolithed (Сообщение 119569)
devote,
не нужно так делать :nono:

То есть тут проход по массиву через for .. in большее зло, чем затирание className? :blink:

monolithed 10.08.2011 18:34

Цитата:

Сообщение от e1f
То есть тут проход по массиву через for .. in большее зло, чем затирание className?

ну, я имел ввиду проблему в скопе, начиная с определения родителя и реализации

devote 11.08.2011 02:16

Цитата:

Сообщение от monolithed
devote,
не нужно так делать

А в моем случае можно и нужно, ибо getElementsByTagName возвращает не массив а объект "NodeList". Да и для пустого массива можно и хуже не будет. Понимаю что там методы могут быть такие какие добавляет тот же match или еще кто. но тут не match а просто пустой массив. Сотню проектов делал все норм пашет, не вижу смыла городить что-то лишнее. Ну а если он навешает прототипов на Array то конечно так лучше не стоит, но сообщу сразу... Учитывая то что он не в курсе как менять класс сомневаюсь что в ближайшее время он будет работать с прототипами.

Видимо это из-за того, что я не сторонник вешать прототипы на стандарные объекты.. И я не понимаю тех кто это делает.

kobezzza 11.08.2011 03:10

Дык даже если расширили прототип, hasOwnProperty ведь никто же не отменял

melky 11.08.2011 03:12

или модное enumerable:false

devote 11.08.2011 04:13

Цитата:

Сообщение от melky
или модное enumerable:false

верно сказано, полностью согласен с тобой. Повесил прототип, позаботься его скрыть.


Часовой пояс GMT +3, время: 17:36.