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的问题。请考虑以后的答案。