取消选中单选按钮后如何更改 class

How to Change class after unchecking radio button

我尝试在取消选中单选按钮后更改 class 模式的样式,但它不起作用。它只添加 class card-modal-2 但不会删除它。我尝试了诸如 nextElementSibling 之类的东西,但仍然没有进展。如果有任何帮助,我将非常高兴。

const modal = document.getElementsByClassName("modal")[0];
const gridModal = modal.getElementsByClassName("grid-modal")[0];

var checkbox = document.querySelectorAll("input[name=group-1]");

for (let i = 0; i < modal.childElementCount - 1; i++) {
  let cardModal = gridModal.getElementsByClassName("card-modal")[i];
  checkbox[i].addEventListener("change", function() {
    if (this.checked) {
      cardModal.classList.add("card-modal-2");
    } else {
      cardModal.classList.remove("card-modal-2");
    }

  });

}
<div class="grid-modal">

  <div class="card-modal">
    <label class="radio-label"><h4>Pledge with no reward</h4>
     <input class ="radio" type="radio" name="group-1"  autocomplete="off" checked="false">
     <span class="check"></span>
     </label>
    <p></p>
    <p class="first-label"> Choose to support us without a reward if you simply believe in our project. As a backer, you will be signed up to receive product updates via email.</p>
  </div>

  <div class="card-modal">
    <label class="radio-label">Bamboo Stand
    <input class ="radio" type="radio" name="group-1"  autocomplete="off" checked="false">
    <span class="check"></span>
    </label>
    <p>Pledge  or more</p>
    <p> You get an ergonomic stand made of natural bamboo. You've helped us launch our promotional campaign, and you’ll be added to a special Backer member list.</p>
    <h4>101</h4>
    <p>left</p>
  </div>

</div>

让我们从解决方案开始:

<div class="grid-modal">

  <div class="card-modal">
    <label class="radio-label"><h4>Pledge with no reward</h4>
     <input class ="radio" type="radio" name="group-1"  autocomplete="off" checked="false">
     <span class="check"></span>
     </label>
    <p></p>
    <p class="first-label"> Choose to support us without a reward if you simply believe in our project. As a backer, you will be signed up to receive product updates via email.</p>
  </div>

  <div class="card-modal">
    <label class="radio-label">Bamboo Stand
    <input class ="radio" type="radio" name="group-1"  autocomplete="off" checked="false">
    <span class="check"></span>
    </label>
    <p>Pledge  or more</p>
    <p> You get an ergonomic stand made of natural bamboo. You've helped us launch our promotional campaign, and you’ll be added to a special Backer member list.</p>
    <h4>101</h4>
    <p>left</p>
  </div>

</div>
<script>
const gridModal = document.getElementsByClassName("grid-modal")[0];

var checkbox = document.querySelectorAll("input[name=group-1]");
var cardModals = gridModal.getElementsByClassName("card-modal");
for (let i = 0; i < checkbox.length; i++) {
  checkbox[i].addEventListener("change", function() {
    for (let j = 0; j < cardModals.length; j++)
    if (i === j) {
      cardModals[j].classList.add("card-modal-2");
    } else {
      cardModals[j].classList.remove("card-modal-2");
    }

  });

}
</script>

说明:您没有取消选中单选按钮(它不是复选框),您正在选中正确添加 class 的另一个按钮。您需要将 class 添加到选中的单选按钮并从其他单选按钮中删除 class。