javascript - 如何在 Javascript 中使用循环生成事件处理程序?

标签 javascript

例如,我有 10 个从 AJAX 响应生成的 a 标签:

<a href="#" id="b1">b1</a>
<a href="#" id="b2">b2</a>
<a href="#" id="b3">b3</a>
<a href="#" id="b4">b4</a>
<a href="#" id="b5">b5</a>
<a href="#" id="b6">b6</a>
<a href="#" id="b7">b7</a>
<a href="#" id="b8">b8</a>
<a href="#" id="b9">b9</a>
<a href="#" id="b10">b10</a>

我需要通过循环将 onclick 事件分配给每个人:

for(i=1; i<11; i++) {
    document.getElementById("b"+i).onclick=function() {
        alert(i);
    }
}

这不起作用,它只将 onclick 分配给最后一个标签并提醒“11”。我怎样才能让它发挥作用?我不想使用 jQuery。

最佳答案

所有处理程序都共享相同的 i 变量。

您需要将每个处理程序放入一个单独的函数中,该函数将 i 作为参数,以便每个处理程序都有自己的变量:

function handleElement(i) {
    document.getElementById("b"+i).onclick=function() {
        alert(i);
    };
}

for(i=1; i<11; i++) 
    handleElement(i);

关于javascript - 如何在 Javascript 中使用循环生成事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679268/

相关文章:

javascript - serverData 在 Internet Explorer 中未正确返回 - swfupload 和 Rails

javascript - 变量似乎没有更新其值

javascript - 读取文件上传 - jQuery 或 Javascript

javascript - 循环 JSON 数组并创建单个 JSON 字符串

Javascript/NodeJS 回调函数和循环

javascript - Electron 重建 "Unable to find Electron app ..."

javascript - Maximo JS 自动化脚本 : "importPackage" is not defined

javascript - 选项卡中的 AngularJS Bootstrap HTML

javascript - 如何将控制台和文档上的内置方法分配给 javascript 中的变量?

javascript - Yii - js 函数不工作