javascript - 如何检测和使用单选按钮取消选择

标签 javascript

我有一个基于计分系统的测验,每个单选按钮都存储在一个数组中,我正在遍历该数组。根据为每个问题选择的 radio ,用户会根据该 radio 的值获得一定数量的分数。问题是,如果用户改变主意并取消选择 radio /更改答案,我希望能够删除 radio 的分数。

for (var i = 0; i < allRadios.length; i++) {
  allRadios[i].addEventListener('change', (e)=>{
    let radio = e.target;
    if (radio.checked) {
      totalScoreMain = totalScoreMain + parseInt(radio.getAttribute('value'));
    }
  });
}

最佳答案

您可以简单地在 change 函数中收集所有选中的单选按钮,然后计算这些选中的单选按钮的值:

var totalScoreMain = 0,
  allRadios = document.querySelectorAll('input[type="radio"]');
for (var i = 0; i < allRadios.length; i++) {
  allRadios[i].addEventListener('change', (e) => {
    totalScoreMain = 0;
    let checkedRadios = document.querySelectorAll('input[type="radio"]:checked');
    checkedRadios.forEach(function(checkedRadio) {
      totalScoreMain += parseInt(checkedRadio.getAttribute('value'));
    });
    console.log(totalScoreMain);
  });
}
<div>
  <input name='1_1' type="radio" value="10"> 10
  <input name='1_1' type="radio" value="20"> 20
</div>
<div>
  <input name='1_2' type="radio" value="30"> 30
  <input name='1_2' type="radio" value="40"> 40
  <input name='1_2' type="radio" value="50"> 50
</div>
<div>
  <input name='1_3' type="radio" value="35"> 35
  <input name='1_3' type="radio" value="45"> 45
  <input name='1_3' type="radio" value="25"> 25
</div>

关于javascript - 如何检测和使用单选按钮取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790378/

相关文章:

javascript - 将元素插入数组,其中对象由用户指定

javascript - Jest/expect "toEquals"因未定义的属性而失败

javascript - 如何将 html 表格以多选项卡格式导出到 Excel?

javascript - 如何使用 JavaScript 聚焦 html 文本字段?

javascript - Bootstrap 3 按钮悬停/焦点状态

javascript - Django Rest Framework/Angular JS 预检选项请求

javascript - PhotoEditorSDK 更改编辑器启动时的默认控制

java - 打印从 Spring MVC Controller 发送的字符串数组在 javascript 中仅显示 "toJSON"

javascript - jqPlot 从线到点

javascript - 如何在 Javascript 中向我的计数加载程序添加百分号