javascript - 将值传递给 onclick

标签 javascript loops closures

<分区>

如果我使用循环创建大量 HTML 元素,例如

for (i= 1; i < 100; i++) {
    var my_element = document.createElement ("td");
    row.appendChild (my_element);
    my_element.onclick = function () {my_function (i));
}

然后当元素被点击时,传递给 my_function 的 i 的值总是 100,不管调用它的数字元素是什么。我已经通过使用

解决了这个问题
my_element.id = "something"+i;
my_element.onclick = function (e) {my_function (e.target.id)};

(对于 Internet Explorer,显然 target 需要是 srcElement。)我很想知道是否有任何方法可以创建函数而无需添加像这样的元素的 ID。

最佳答案

i 的值随着循环的每次迭代而改变。 You need a closure to capture the value of i :

(function(i) {
    my_element.onclick = function () {my_function (i)};
}(i))

关于javascript - 将值传递给 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582634/

相关文章:

native N 上的 Javascript 选择 :N relationship entity crm 2011

javascript - 显示/隐藏 Javascript 问题

javascript - 对两个地址进行地理编码并创建 map js googlemaps api v3

php - 阵列运行不正常

loops - JMeter while循环不检测EOF

使用 pthreads 在 C 中将顺序循环转换为并行循环

javascript - 如何将对象(或关联数组)作为属性值传递给我的 Web 组件

grails - 使用 Curry 定义 Grails 标签

swift - 插入函数作为参数

javascript - 为什么 Javascript 小书签包含在闭包中?