Javascript 将属性设置为多个元素

Javascript 将属性设置为多个元素,javascript,setattribute,Javascript,Setattribute,我有许多类publish_0的div,我想点击按钮将其更改为publish_1 现在我用这个,但它只改变了一个项目 如何将setattribute应用于具有publish\u 0的所有项目 document.querySelector('.publish_0').setAttribute("class", "publish_1"); 您需要使用循环来迭代所有元素,并分别设置它们的类属性值: var els = document.querySelectorAll('.publish_0'); f

我有许多类
publish_0
的div,我想点击按钮将其更改为
publish_1

现在我用这个,但它只改变了一个项目

如何将setattribute应用于具有
publish\u 0
的所有项目

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

您需要使用循环来迭代所有元素,并分别设置它们的类属性值:

var els = document.querySelectorAll('.publish_0');
for (var i=0; i < els.length; i++) {
    els[i].setAttribute("class", "publish_1");
}
var els=document.querySelectorAll('.publish_0');
对于(变量i=0;i
您可以将其用于jquery:

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

或者,使用getElementsByClassName并循环返回的DOM元素。

如果您不能使用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");}))
甚至更好的是,如果浏览器支持ECMAScript 2015,则可以使用箭头语法:

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

如果你愿意,你可以把所有的陈述放在一行

@bfavareto谢谢。这就是复制粘贴OP代码时发生的情况。出现的次数比我想承认的要多。当您使用类时,可以使用
getElementsByClassname
而不是
querySelectorAll
,它的性能会更好。请看一个例子Vivek,虽然我很欣赏您关于使用jQuery的建议,但OP已经表达了他们关于Vanilla JavaScript的问题。请考虑以后的答案。