我有这3个盒子有相同的类和一个按钮:
function turnRedAndAddPadding() {
/* ??? */
}
.box {
border: 1px solid;
display: inline;
}
<button onclick="turnRedAndAddPadding();">Press</button>
<div class="box">Box 1</div>
<div class="box">Box 2</div>
<div class="box">Box 3</div>
我想在点击按钮时给类.box
添加样式,而不给框添加新的类。基本上,如果你按下按钮,类.box
应该得到红色背景色和填充,并且所有拥有这个类的元素都应该有相同的填充。在JavaScript中有没有简单的方法来解决这个问题?
先谢了。
5条答案
按热度按时间rt4zxlrg1#
你并不是真的想在 * existing * 类中添加属性,你应该做的是在每个元素的class * list * 中添加一个包含这些红色/填充属性的 * new * 类。
工具包
1.您需要一些方法来"拾取"要处理的元素。由于您有多个
querySelectorAll
,因此它可能是首选,它将为您提供一个静态节点列表(而不是像getElementsByClassName
这样的方法提供的动态HTML集合,如果您不正确使用它们,它们会产生一些副作用)。1.你需要一种iterate over the elements的处理方式,在这个链接中提供了很多可能性,但是
forEach
是一个很好的选择。1.你需要一种方法来更新迭代中每个元素的类列表,在
classList
的方法中,add
接受你想要添加的CSS类的字符串。1.定义一个可以使用的新类(本例中为"redpad")。
1.最后,因为您希望避免在2023中使用内联JS,所以应该使用
addEventListener
,它接受a)事件类型和b)在触发该事件时要调用的函数的名称。jljoyd4f2#
基于that post,您可以尝试以下操作:
希望有帮助。
px9o7tmv3#
是的,您可以使用style属性用JavaScript向类
.box
添加样式。下面是一个例子:
3zwtqj6y4#
W3 Schools的一些非常有用的文档讨论了如何使用
getElementsByClassName
,你可以找到here,你也可以通过每个元素的padding属性从here找到编辑填充的方法。下面我找到了所有有类框的div。然后对它们进行迭代并分配颜色和填充。你可以根据自己的喜好进行修改。
还有many other properties,您可以为每个DOM元素(如divs)进行编辑!
4szc88ey5#
只要添加一些javascript就可以实现你的目标。
document.querySelectorAll
使用此函数,您可以收集类box
的所有元素,然后使用foreach函数循环