我只使用 javascript,而不是 jQuery 或没有其他 javascript 框架。
我创建了一个锚标记,例如:
var _a = document.createElement('a');
现在我想为这个标签添加 onclick。我试过以下:
_a.onclick = function(){ mycode(id); }
该函数适用于此,但锚标签是在循环中创建的……所以mycode(id)
总是取循环的最后一个值。
任何人都可以帮助我吗?
我只使用 javascript,而不是 jQuery 或没有其他 javascript 框架。
我创建了一个锚标记,例如:
var _a = document.createElement('a');
现在我想为这个标签添加 onclick。我试过以下:
_a.onclick = function(){ mycode(id); }
该函数适用于此,但锚标签是在循环中创建的……所以mycode(id)
总是取循环的最后一个值。
任何人都可以帮助我吗?
可能您需要一个函数来创建您的处理程序,如下所示:
function createHandler( id ) {
return function(){ mycode( id ); };
}
然后在循环内分配
for ( i= ... ) {
_a.onclick = createHandler( i );
}
另一方面,您可能应该使用addEventListener()
(MDN 文档)向元素添加事件:
_a.addEventListener( 'click', createHandler( i ) );
for(var id = 0; id < 10; id++){
var _a = document.createElement('a');
_a.onclick = (function(id){
return function (){
mycode(id);
}
})(id);
}
那应该解决它。
尝试以下:
_a.onclick = (function(id){return function(){ mycode(id); }})(id);