javascript - 如何获取选中项目的所有复选框值的总和

标签 javascript

let addonCheckboxes = document.querySelectorAll(".custom-checkbox")
let priceSection = document.getElementById("priceSection")
let customProductPricing = document.getElementById("customProductPricing")

for (let i = 0; i < addonCheckboxes.length; i++) {
  addonCheckboxes[i].addEventListener("change", function() {
    if (addonCheckboxes[i].checked != false) {
      priceSection.textContent = parseInt(customProductPricing) + parseInt(addonCheckboxes[i].getAttribute("price"));
    } else {
      priceSection.textContent = parseInt(customProductPricing)
    }
  })

}
<input class="custom-checkbox" type="checkbox" price="150"></input>
<input class="custom-checkbox" type="checkbox" price="150"></input>
<input class="custom-checkbox" type="checkbox" price="150"></input>

<div id="priceSection">
  </id>

  <div id="customProductPricing">"150"</div>

如果所有复选框都被选中,我想获得它们的总数。到目前为止它只给出一个值。如果不勾选则需要扣除价格。

最佳答案

这个已经修复了您在标记中犯的所有错误,并大大简化了代码。

const output = document.getElementById('priceSection');

const totalPrice = () => [...document.querySelectorAll('#prices input[type=checkbox]:checked')]
  .reduce((acc, {
    dataset: {
      price
    }
  }) => acc + +price, 0);

document.getElementById('prices').addEventListener('change', () => output.textContent = totalPrice());
<div id="prices">
  <input type="checkbox" data-price="10" />
  <input type="checkbox" data-price="20" />
  <input type="checkbox" data-price="30" />
</div>
<div id="priceSection"></div>

关于javascript - 如何获取选中项目的所有复选框值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70644758/

相关文章:

javascript - 在Angular Controller 的回调中,为什么参数必须命名为 "$scope"?

javascript - 与剩余运算符和循环混淆

javascript - 如何在 JavaScript 中将二维数组转换为(对象)树?

JavaScript Regex 将长日期时间转换为短日期并将长数字转换为小数点后两位

javascript - 在knockoutjs组件中实现继承

javascript - 使用 AngularJS 和 OpenWeather 创建天气应用程序

javascript - jQuery 动画滚动不起作用

javascript - angularJS $location.path 带参数

javascript - Cssnano 不删除重复项

javascript - JQuery click() - 超出最大调用堆栈大小