2017-06-05 152 views
-2

我正在研究某种计算器,可以说我有一个名为IQ的全局变量。现在,我有一个有5个选项的复选框(在这里是5个不同的人)。我希望每个人选择时减少或增加全局变量IQ。如何检查是否选择了多个复选框

我想过用if语句来做这件事,但如果第一个if是真的(即一个人被检查并且值===人)会怎么样。然后代码将停止并且不检查其他if语句以查看是否选择了更多人员/复选框。希望这是我明白的。

这是我的HTML代码:

<input type="checkbox" name="person" value="frank"> Frank Aarebrot<br> 
<input type="checkbox" name="person" value="gaben"> Gabe Newell<br> 
<input type="checkbox" name="person" value="lance"> Lance Armstrong<br> 
<input type="checkbox" name="person" value="trond"> Trond Kirkvaag<br> 
<input type="checkbox" name="person" value="davy"> Davy Wathne<br> 
+0

的唯一方式,它不会检查其他if语句是否将它们全部组合成一个大的if-else块。如果你将每个if语句分开,它仍然会评估每个if语句。 如果您已经尝试了可以​​说明您遇到问题的JavaScript代码,则应将其添加到问题中。你有JavaScript标记,因为你要写javascript,但你真的应该尝试在你的问题。 – Lexi

+0

[获取勾选的复选框的值?]的可能重复(https://stackoverflow.com/questions/11599666/get-the-value-of-checked-checkbox) – Code4R7

回答

0

你可以听每个复选框change事件,并相应计算你的电话号码。在这里,我创建人名称的新地图状物体作为重点和+ -1作为一个值来表示weither加上或减去1:

var cbs = document.querySelectorAll('input[type=checkbox][name=person]'); 
 

 
var plusMinus = { 
 
    frank: 1, 
 
    gaben: -1, 
 
    lance: 1, 
 
    trond: -1, 
 
    davy: 1 
 
} 
 

 
var p = document.getElementById('iq'); 
 
p.textContent = '0'; 
 

 
for (const cb of cbs) { 
 
    cb.addEventListener('change', (e) => { 
 
    var {checked, value} = e.target; 
 
    p.textContent = parseInt(p.textContent) + plusMinus[value] 
 
     * ((checked) ? 1 : -1) // +- math 
 
    }) 
 
}
<input type="checkbox" name="person" value="frank"> Frank Aarebrot<br> 
 
<input type="checkbox" name="person" value="gaben"> Gabe Newell<br> 
 
<input type="checkbox" name="person" value="lance"> Lance Armstrong<br> 
 
<input type="checkbox" name="person" value="trond"> Trond Kirkvaag<br> 
 
<input type="checkbox" name="person" value="davy"> Davy Wathne<br> 
 
<hr> 
 
<p id="iq"></p>

相关问题