首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在js中使用选中的两个选项进行总结

在js中使用选中的两个选项进行总结
EN

Stack Overflow用户
提问于 2018-04-07 18:02:14
回答 4查看 34关注 0票数 0

我在html中有这个代码

代码语言:javascript
运行
复制
<input type="checkbox" value="12" id="logo" checked onchange="calculate(this);">
<input type="checkbox" value="19" id="bc" checked onchange="calculate(this);">
<input type="checkbox" value="200" id="first" onchange="calculate(this);">
<input type="checkbox" value="250" id="second" onchange="calculate(this);">

<p id="total"></p>

然后js

代码语言:javascript
运行
复制
var total = 0;

function calculate(option) {
    if (option.checked) {
        total += Number(option.value);
    } else {
        total -= Number(option.value);
    }
    document.getElementById("total").innerHTML = total;
}

我需要前两个checked复选框从页面加载时开始,在js行为之后进行汇总,以使我达到0,或者在检查时将复选框总数分别取消检查。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-04-07 18:45:57

使用一个类:

代码语言:javascript
运行
复制
<input type="checkbox" value="12" id="logo" class='summary' checked>
<input type="checkbox" value="19" id="bc" class='summary' checked>
<input type="checkbox" value="200" id="first" class='summary'>
<input type="checkbox" value="250" id="second" class='summary'>

document.addEventListener('DOMContentLoaded', function() {
    var summerizers = document.querySelectorAll('.summary'),
        counter = document.getElementById('counter');

    for (var i = 0, c = summerizers.length; i < c; i++) {
        summerizers[i].addEventListener('change', count);
    }

    count();

    function count() {
        var total = 0;

        for (var i = 0, c = summerizers.length; i < c; i++) {
            if (summerizers[i].checked) {
                total += parseInt(summerizers[i].value, 10);
            }
        }

        counter.value = total;
    }

});

https://jsfiddle.net/r1khjrsd/

票数 0
EN

Stack Overflow用户

发布于 2018-04-07 18:12:10

您可以向页面加载添加一个事件侦听器,只需使用querySelectorAll("input[type=checkbox]")选择选项,该选项将选择所有复选框,对其进行迭代并对其进行加和。

代码语言:javascript
运行
复制
var total = 0;

function calculate(option) {
  if (option.checked) {
    total += Number(option.value);
  } else {
    total -= Number(option.value);
  }
  document.getElementById("total").innerHTML = total;
}

window.addEventListener("load", function() {
  var options = document.querySelectorAll("input[type=checkbox]");
  for (var i = 0; i < options.length; i++) {
    const o = options[i];
    if (o.checked) total += Number(o.value);
  }
  document.getElementById("total").innerHTML = total;
}, false);
代码语言:javascript
运行
复制
<input type="checkbox" value="12" id="logo" checked onchange="calculate(this);">
<input type="checkbox" value="19" id="bc" checked onchange="calculate(this);">
<input type="checkbox" value="200" id="first" onchange="calculate(this);">
<input type="checkbox" value="250" id="second" onchange="calculate(this);">

<p id="total"></p>

票数 1
EN

Stack Overflow用户

发布于 2018-04-07 18:22:50

为了达到预期的结果,使用初始标志检查初始页面加载和checkTotal函数检查初始加载时的复选框。

步骤:

  1. 函数checkedTotal检查所有复选框,并调用布尔值开始的计算函数。
  2. 如果开始为真,则只在计算函数enter code here中添加选中的复选框值并限制其他部分。

代码示例- https://codepen.io/nagasai/pen/XEyqEd?editors=1111

代码语言:javascript
运行
复制
var total = 0;

function calculate(option,start) {
    if (option.checked) {
        total += Number(option.value);
    } else {
        if(!start){
        total -= Number(option.value);
        }
    }
  
    document.getElementById("total").innerHTML = total;
}

function checkedTotal(){
  var checkList = document.getElementsByTagName('input');
  for(var i =0; i < checkList.length; i++){
     calculate(checkList[i], true)
  }
}

checkedTotal()
代码语言:javascript
运行
复制
<input type="checkbox" value="12" id="logo" checked onchange="calculate(this);">
<input type="checkbox" value="19" id="bc" checked onchange="calculate(this);">
<input type="checkbox" value="200" id="first" onchange="calculate(this);">
<input type="checkbox" value="250" id="second" onchange="calculate(this);">

<p id="total"></p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49710355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档