Как сменить название класса у всех элементов
Задача - имеется некоторое количество элементов на странице с классом X. Как у таковых элементов сменить класс на Y? Подозреваю, что это вообще можно сделать одной строчкой.
Через getElementsByClass чтото не получается, догадываюсь почему. |
getElementsByClass не работает в ие http://caniuse.com/getelementsbyclassname ,но есть вариант эмуляции.
Сменить класс элемента для новых браузеров можно через classList . Для всех используя Element.className='имя класса' |
да не в этом дело
function changeclass(classoff,classto) { var elems = getElementsByClass(classoff); for (var i = 0; i < elems.length; i++) elems[i].className = classto; } Функция по какойто причине меняет класс только у каждого второго элемента. При смене класса массив elems коверкается? Я проверял, любое другое действие с элементами на ура. А смена класса с каждым вторым. |
Цитата:
В вашем случае происходит следующее: 1) вы взяли нулевой элемент NodeList, и изменили ему классю 2) так как у него теперь нету того класса, по которомы вы искали, то весь elems перестраивается: из него удаляется нулевой элемент, а все остальные смещаются влево. 3) теперь когда вы берет 1-й элемент elems, то на самом деле вы берете второй элемент от исходного массива. так, на каждой итерации, elems уменьшается на один элемент, и вы идете только по четным элементам. так что скопируйте elems в обычный массив, прежде чем делать такие операции, либо |
попробуйте вместо цикла for цикл while
while(elems.length>0) elems[0].className = classto; |
Часовой пояс GMT +3, время: 19:12. |