如果有多个复选框,则切换事件
If many check boxes toggle event
我想将切换事件添加到某些列表项的复选框中,例如
.HTML
<input type="checkbox" class="list" value="Apple">
<input type="checkbox" class="list" value="Banana">
<input type="checkbox" class="list" value="Cucumber">
爪哇语
var list = document.getElementsByClassName('list');
for(a=0; a<list.length; a++){
list[a].addEventListener('click',function(){
if ( list[a].checked ){ alert('Checked'); } else { alert('Unchecked'); }
}, false);
}
当我检查时没有任何反应。
你需要在循环中使用this
,而不是list[a].checked
:
var list = document.getElementsByClassName('list');
for (a = 0; a < list.length; a++) {
list[a].addEventListener('click', function () {
if (this.checked) {
console.log('Checked');
} else {
console.log('Unchecked');
}
}, false);
}
<input type="checkbox" class="list" value="Apple">
<input type="checkbox" class="list" value="Banana">
<input type="checkbox" class="list" value="Cucumber">
list[a]
等效于代码运行时的list[3]
,并且没有第四个列表项。
当你的处理程序实际运行时,a == list.length
,所以list[a]
是未定义的(因为你的 JS 控制台会抱怨)。
相反,引用this
以获取实际单击的元素:
function alertChecked() {
if (this.checked) {
alert('Checked');
} else {
alert('Unchecked');
}
}
var list = document.getElementsByClassName('list');
for (a = 0; a < list.length; a++) {
list[a].addEventListener('click', alertChecked, false);
}
<input type="checkbox" class="list" value="Apple">
<input type="checkbox" class="list" value="Banana">
<input type="checkbox" class="list" value="Cucumber">
另一种方法...在我看来更具可读性:-)
我改用了"change"事件以获得更好的兼容性(键盘导航)。而且我更喜欢使用 forEach 循环 :-)
var list = document.getElementsByClassName('list');
var alertOnChange = function(event) {
alert( event.srcElement.checked ? "checked!" : "unchecked!")
}
Array.prototype.forEach.call(list, function(element) {
element.addEventListener('change', alertOnChange);
});
<input type="checkbox" class="list" value="Apple">
<input type="checkbox" class="list" value="Banana">
<input type="checkbox" class="list" value="Cucumber">
相关文章:
- 如果选中了多个复选框,如何添加事件
- 复选框,然后单击事件处理
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 选中javascript中的属性集时,复选框更改事件未触发
- jQuery复选框(在ul>li下)检查事件
- 如何禁用自定义复选框的单击事件
- 将函数事件绑定到更改函数的复选框/标签
- 当通过选择页面上所有复选框的 jQuery 脚本选中复选框时,如何触发自定义 javascript 事件
- 选中/取消选中某些事件的复选框
- Javascript,表单中任何复选框的事件处理程序
- Jquery复选框更改事件未激发
- jQuery复选框和span共享一个单击事件
- 带有复选框的jQuery更改事件处理程序
- 复选框上的点击捕捉事件
- 使用 JavaScript 更改复选框 OnClick 事件的值
- 空格键触发单击事件复选框
- 更改 Chrome 扩展程序中未触发的事件复选框
- 在AJAX插入的动态创建元素上绑定事件(复选框)
- 单击“事件”复选框将不会触发
- 动态添加点击事件复选框,只适用于第一个复选框JQUERY