2013-08-27 5 views
8

У меня есть много div с классом publish_0, что я хотел бы изменить на publish_1 нажатием кнопки.javascript setattribute для нескольких элементов

Прямо сейчас я использую это, но он меняет только один элемент.

Как применить setattribute ко всему элементу, у которого есть publish_0.

document.querySelector('.publish_0').setAttribute("class", "publish_1"); 

ответ

3

Вы можете использовать это с JQuery:

$(".publish_0").attr("class", "publish_1") 

В качестве альтернативы, используйте getElementsByClassName и пропустите возвращаемые возвращаемые элементы DOM.

22

Вы должны использовать цикл для перебора всех элементов и установить их значение атрибута класса по отдельности:

var els = document.querySelectorAll('.publish_0'); 
for (var i=0; i < els.length; i++) { 
    els[i].setAttribute("class", "publish_1"); 
} 
+0

querySelectorAll – bfavaretto

+0

@bfavaretto Спасибо. Это то, что происходит, когда вы копируете код OP. –

+0

Был там больше раз, чем я хотел бы признать. – bfavaretto

3

Если вы не можете использовать jQuery, но хотите что-то подобное, вы можете сделать следующее. Добавьте следующий код в начало файла или где-нибудь еще, что легко видно.

NodeList.prototype.forEach = NodeList.prototype.forEach || Array.prototype.forEach; 

Теперь в вашем коде вы можете сделать это:

document.querySelectorAll('body,main,article,[class*=content],[class*=center]') 
     .forEach((function(x){ x.setAttribute("style","width:1920px");})) 

Или даже еще лучше, если браузер поддерживает ECMAScript2015 вы можете использовать стрелки синтаксис:

document.querySelectorAll('[class*=content]') 
     .forEach(x=> x.setAttribute("style","width:1200px")) 

Вы можете поместить выпишите все на одной строке, если хотите.

 Смежные вопросы

  • Нет связанных вопросов^_^