在选中所有输入复选框后,我需要向元素添加一个类,而无需单击提交按钮。我非常希望不要涉及jQuery,因为这将是页面上唯一的javascript元素。这是我到目前为止的内容,它看起来像是在第一次单击复选框后添加的类,这不是我想要的。
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;
}
任何帮助都会很棒!
答案 0 :(得分:1)
您需要获取复选框的总数,如果勾选了特定的复选框,则需要增加一个计数器。如果数字匹配,则必须选中所有复选框。
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');
}
}
}
答案 1 :(得分:1)
您可以添加一个用于长度的变量复选框,然后将i与长度进行比较。
var length = checkbox.length;
var check = 0;
for(var i=0;i<checkbox.length;i++) {
if(checkbox[i].checked){
check++;
}
if (check == length){
document.getElementById(box).classList.add('show');
}
}
function showMe (box) {
var checkbox = document.getElementsByName("selectPlant");
var length = checkbox.length;
var check = 0;
for(var i=0;i<checkbox.length;i++) {
if(checkbox[i].checked){
check++;
}
if (check == length){
document.getElementById(box).classList.add('show');
}
}
}
#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;
}
<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>
答案 2 :(得分:1)
除了正常行为外,如果没有复选框,此答案将默认为true
function showMe (box) {
var checkbox = document.getElementsByName("selectPlant");
var allChecked=true;
for(var i=0;i<checkbox.length;i++) {
if(!checkbox[i].checked){
allChecked = false;
}
}
if(allChecked){
document.getElementById(box).classList.add('show');
}
}