[在Java中检查多个复选框状态时如何防止重复的代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[在Java中检查多个复选框状态时如何防止重复的代码?相关的知识,希望对你有一定的参考价值。

我正在制作一种复选框形式,用于在“选中”属性为true或false时显示图像。第一个复选框现在可以使用了,但是我不清楚如何减少所需的代码量,因为每个复选框本质上都是相同的。

我要显示图像的工作功能写在下面:

const pepperoniCheckbox = document.getElementById("pepperoniCheckbox");
const pepperoniImage = document.getElementById("pepperoni-image");

document.getElementById("pepperoniCheckbox").onclick = function() {
  if (this.checked) {
    pepperoniImage.style.visibility = "visible";
  } else {
    pepperoniImage.style.visibility = "hidden";
  }
};

图像和复选框的html也在这里:

<div class="ingredients-boxes" style="padding-top: 200px">
  <input type="checkbox" value="pepperoni" id="pepperoniCheckbox" />
  <label for="pepperoni"> Pepperoni </label>

  <input type="checkbox" value="olives" id="olivesCheckbox" />
  <label for="olives"> Olives </label>
</div>
<main>
  <div class="pizza-holder">
    <img class="pizza" src="pizza-hut-crust-pan-pizza-food-delivery-pizza.jpg" />
    <img class="pizza pepperoni" id="pepperoni-image" src="pepperoni-transparent.png" />
  </div>
</main>

我确定有一种方法可以在以后添加的复选框和内容中复制此效果,但我无法将其包裹住。我认为每个复选框都需要有一个onclick事件,它们都指向同一个函数,而不是像我上面所做的那样将函数放在每个复选框变量上。

答案

许多方法可以做到,但是一个简单的方法是这样:

创建一个将元素作为选项的JS函数,并使用它来构建id(假设您保持一致的命名约定):

function isChecked(e) {
  if (e.checked) {
    document.getElementById(e.value + '-image').style.visibility = "visible";
  } else {
    document.getElementById(e.value + '-image').style.visibility = "hidden";
  }
}

然后在HTML中,向每个元素添加onclick

<input type="checkbox" value="pepperoni" id="pepperoniCheckbox" onclick="isChecked(this);"/>

另一答案

答案

您可以将事件委托Element.prototype.matchesevent.target一起使用。

工作示例:

const parent = document.querySelector(".ingredients-boxes");

parent.addEventListener("click", function(event) {
const element = event.target;

if(element.matches("input[type='checkbox']")) {
const image = document.querySelector("#" + element.value + "-image");
  if (element.checked) {
    image.style.visibility = "visible";
  } else {
    image.style.visibility = "hidden";
  }
}
});
<div class="ingredients-boxes" style="padding-top: 200px">
  <input type="checkbox" value="pepperoni" id="pepperoniCheckbox" />
  <label for="pepperoni"> Pepperoni </label>

  <input type="checkbox" value="olives" id="olivesCheckbox" />
  <label for="olives"> Olives </label>
</div>
<main>
  <div class="pizza-holder">
    <img class="pizza" src="pizza-hut-crust-pan-pizza-food-delivery-pizza.jpg" />
    <img class="pizza pepperoni" id="pepperoni-image" src="pepperoni-transparent.png" />
    <img class="pizza olives" id="olives-image" src="pepperoni-transparent.png" />
  </div>
</main>

以上是关于[在Java中检查多个复选框状态时如何防止重复的代码?的主要内容,如果未能解决你的问题,请参考以下文章

复选框状态发生变化时如何防止页面跳转?

如何将多个复选框值传递给php [重复]

如何在使用不同风格的相同命名类时防止重复类错误?

django 表单:如何检查模板中的复选框状态

如何知道是不是使用java在selenium中选中了一个复选框[重复]

Java Selenium检查复选框标签状态