选中所有输入复选框后,我需要向元素添加一个类,而无需单击提交按钮。我非常希望不要涉及jQuery,因为这将是页面上唯一的javascript元素。这是我到目前为止所拥有的,看起来它是在第一次单击复选框后添加类的,这不是我想要的。
Codepen link
JS
function showMe (box) {
var checkbox = document.getElementsByName("selectPlant");
for(var i=0;i<checkbox.length;i++) {
if(checkbox[i].checked){
document.getElementById(box).classList.add('show');
}
}
}
HTML
<a href="#" id="reward" style="opacity:0">
TADA!
</a>
<form action="" id="">
<input type="checkbox" name="selectPlant" onclick="showMe('reward')">
<input type="checkbox" name="selectPlant" onclick="showMe('reward')">
<input type="checkbox" name="selectPlant" onclick="showMe('reward')">
<input type="checkbox" name="selectPlant" onclick="showMe('reward')">
</form>
CSS
#reward {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: red;
color: white;
pointer-events: none;
}
#reward.show {
opacity: 1 !important;
}
input[type=checkbox] {
width: 40px;
height: 40px;
}
任何帮助都是极好的!
最佳答案
您需要获取复选框的总数,如果选中了特定的复选框,则需要增加一个计数器。如果数字匹配,则必须选中所有复选框。
function showMe (box) {
var checkbox = document.getElementsByName("selectPlant");
var counter=0;
for(var i=0;i<checkbox.length;i++) {
if(checkbox[i].checked){
counter++;
}
if(counter==checkbox.length)
{
document.getElementById(box).classList.add('show');
}
}
}