如何在单击时切换具有相同 class 名称的多个元素

How to toggle multiple elements with same class name on click

单击切换按钮时如何将颜色从绿色更改为红色到所有行。如果我使用 getElementsbyClassNamequerySelectorAll ,它似乎无法使用相同的 class 名称,如果我使用,只有第一行颜色会改变使用 querySelector 。如果我给每个段落一个不同的 id 或 class 名称,所有线条颜色都会改变。所以基本上我如何切换具有相同 class 名称的多个元素(在这种情况下 class 名称是 'para') 点击 ?这是我的 codepen link - https://codepen.io/fahim04blue/pen/KKNvOZe

html-

<button id='btn' type="button" class="btn btn-primary">toggle</button>
<br>
<br>
<div>
  <p class="para">Paragraph 1</p>
  <p class="para">Paragraph 2</p>
  <p class="para">Paragraph 3</p>
  <p class="para">Paragraph 4</p>
</div>

CSS -

.para{
  background-color:green;
}

.para.red{
  background-color:red;
}

原版 JS

const btn = document.getElementById('btn');
const para = document.querySelector('.para');

btn.addEventListener('click',()=>{
  para.classList.toggle('red');
})

您只选择了一个元素,将 querySelector 更改为 querySelectorAll,然后使用循环。

const btn = document.getElementById('btn');
const para = document.querySelectorAll('.para');

btn.addEventListener('click',()=>{
  para.forEach(el => {
    el.classList.toggle('red');
  })
})
const btn = document.getElementById('btn');
const para = document.querySelectorAll('.para');

btn.addEventListener('click',()=>{
  para.forEach(p => p.classList.toggle('red'));
})

您应该使用 forEach() 来更改 class 的所有元素。