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