javascript - 循环通过复选框以将事件监听器添加到每个框

标签 javascript checkbox addeventlistener

我正在尝试向每个复选框添加一个事件监听器,作为 onclick 方法的替代方法。我使用的代码很简单。

代码可以看这里:

https://jsfiddle.net/Buleria28/5a6zL013/

或此处 Javascript:

function letter() {
 document.getElementById("display").innerHTML = "ABCD";
 }

var box = document.getElementsByName("test");
if (box[0].addEventListener) {
for (var i = 0; i < box.length; i++) {
   box[i].addEventListener("change", letter, false);
 }
} else if (box[0].attachEvent) {
 for (var i = 0; i < box.length; i++) {
   box[i].attachEvent("onchange", letter);
 }

HTML 是:

<div>
<label><input type="checkbox" name="test" value="A">A</label>
<label><input type="checkbox" name="test" value="B">B</label>
<label><input type="checkbox" name="test" value="C">C</label>
<label><input type="checkbox" name="test" value="D">D</label>
</div>

最佳答案

正如@mjkaufer 在上面的评论中指出的那样,您的原始示例在您添加右花括号 } 后工作正常。

但是,有一种更简单的方法可以遍历复选框。尝试使用 forEach 遍历 document.getElementsByName("test") 返回的每个元素:

function letter(){
    document.getElementById("display").innerHTML = "ABCD";
}

document.getElementsByName("test").forEach(function(element) {
    if (element.addEventListener) {
        element.addEventListener("change", letter, false);
    } else if (element.attachEvent) {
        element.attachEvent("onchange", letter);
    }
});

关于javascript - 循环通过复选框以将事件监听器添加到每个框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726820/

相关文章:

android - 移动应用程序(android/ios)中按钮点击的全局事件监听器

javascript - 异步 JavaScript 程序中的函数调用到底是如何排序的?

javascript - 用于声明客户端包含的 ASP.NET 指令约定

javascript - sinon 假 xhr 服务器和 polymer appLocalizeBehavior 语言环境

javascript - 如果所有子复选框均未选中,如何删除选中的复选框?

javascript - 从动态数组中删除项目

javascript - 禁用复选框和文本

javascript - React map 函数 - 随机返回一项

javascript - 当你已经选择了对象时,如何在 jQuery 中获得直接子对象?

javascript - 将 HTML DOM 包含到 addEventListener() 中