动态添加onclick到元素,传递函数参数
adding onclick to elements dynamically, passing function parameter
我有一个预加载的页面,我正在尝试将onclick事件添加到具有特定类名的所有节点。但是 onclick 中的函数应该使用其中的元素节点。
var elemArr=document.getElementsByClassName('ABC');
for(var i=0;i<elemArr.length;i++){
elemArr[i].onclick = function()
{
console.log(elemArr[i]); // This is being returned as undefined
// How can I use elemArr[i] here
};
}
我试过了
for(var i=0;i<elemArr.length;i++){
printObj=elemArr[i];
elemArr[i].onclick = function()
{
console.log(printObj);
var newObject = jQuery.extend(true, {}, printObj);
console.log(newObject );
};
}
但没有用。我觉得以上无论如何都行不通。我该如何解决这个问题..?
您应该使用function
将代码包装在loop
内,以便为每个事件处理程序创建一个新的i
副本,如下所示。
var elems = document.getElementsByClassName('elem');
if (elems.length) {
for (var i = 0, l = elems.length; i < l; i++) {
(function(i) {
elems[i].onclick = function() {
alert('Element #' + i);
}
})(i);
}
}
// Could also use bind for slighlty cleaner code
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
for (var i = 0, l = elems.length; i < l; i++) {
elems[i].onmousedown = (function(index, e) {
console.log('MouseDown - Element #' + index);
}).bind(elems[i], i);
}
<div class="elem">Elem #1</div>
<div class="elem">Elem #2</div>
<div class="elem">Elem #3</div>
相关文章:
- 如何传递函数中的参数
- 传递带有参数的函数
- 在使用 findAndModify 时$set运算符中将函数参数作为字段名称传递
- 如何在 OnClick 函数中传递字符串参数
- 一次将多个对象传递给函数参数
- 在构造控制器、服务等时作为函数参数传递之前列出的角度 JS 变量
- 将传递的函数参数附加到控制器内的$scope
- extjs-使用传递的参数创建自定义函数
- 如果我传递一个参数,则不会调用javascript函数
- 如何传递PHP字符串作为JS函数参数
- 动态添加onclick到元素,传递函数参数
- 订阅事件时传递函数参数
- 如何在javascript模块模式中传递函数参数
- 通过ng-change传递函数参数不工作
- 在使用选择器时传递函数参数的好方法是什么?
- 从c#代码后面传递函数参数
- JavaScript传递函数参数和返回值
- 如何在JSON对象中传递函数参数值作为关键字
- 为什么' this '在作为字符串或引用传递函数参数时发生变化
- 通过JQuery Load从PHP获取或post传递函数参数变量