【发布时间】:2016-04-12 15:09:40
【问题描述】:
我有四个像这样在页面加载时开始的变量(注意:加起来是 100)...
a=60;
b=20;
c=10;
d=10;
我有三个这样的复选框..
<label for="b">B</label>
<input type="checkbox" id="b" name="b" value="" checked="checked" >
<label for="c">C</label>
<input type="checkbox" id="c" name="c" value="" checked="checked" >
<label for="d">D</label>
<input type="checkbox" id="d" name="d" value="" checked="checked" >
如您所见,默认情况下会选中所有三个复选框。我想根据选中/取消选中这三个框中的任何一个来更改上面的变量。本质上,取消选中复选框就是关闭该变量并使其值为 0。换句话说:
var b 为 20(选中复选框时)或未选中时为 0
var c 将为 10(选中复选框时)或未选中时为 0
var d 将为 10(选中复选框时)或未选中时为 0
当其中任何一个未被选中时,我想将它们的值添加到 var a,因为我希望所有 4 个变量总和为 100
例如,如果所有三个复选框都保持选中状态,则 var a 保持为 60。 如果复选框 B 未选中且 C/D 保持选中状态,则 var a 变为 80(原始 60 加上“关闭”var b 的 20)
我的想法是做这样的事情......
$(function() {
$("input[type='checkbox']").change(function() {
if(document.getElementById('b').checked) {
var a = a-20;
var b = 20;
} else {
var a = a+20;
var b = 0;
}
//and do this for all three checkboxes
})
})
但后来我意识到,如果每次更改任何一个框时都查看每个框,那么我会不必要地从 var a 中减去其中 2 个的值,因为默认情况下会检查它们。
无论如何,我确信为每个块设置一个代码块可能是一种低效的处理方式。任何人都对我可能压缩代码有任何指导,特别是仅在更改特定复选框时添加/减去值(因为简单地查看它们是否被选中会导致问题,因为默认情况下它们都被选中)
例如在上面的代码中,如果复选框 D 未被选中并触发了函数,它会查看复选框 B 并看到它已被选中并从 a 中减去 20,但它不应该因为 B 根本没有改变还没有。
抱歉漫无边际,希望这对某人有意义。
【问题讨论】:
标签: javascript jquery html checkbox