0

我只使用 javascript,而不是 jQuery 或没有其他 javascript 框架。

我创建了一个锚标记,例如:

var _a = document.createElement('a');

现在我想为这个标签添加 onclick。我试过以下:

_a.onclick = function(){ mycode(id); }

该函数适用于此,但锚标签是在循环中创建的……所以mycode(id)总是取循环的最后一个值。

任何人都可以帮助我吗?

4

3 回答 3

2

可能您需要一个函数来创建您的处理程序,如下所示:

function createHandler( id ) {
  return function(){ mycode( id ); };
}

然后在循环内分配

for ( i= ... ) {
   _a.onclick = createHandler( i );
}

另一方面,您可能应该使用addEventListener()MDN 文档)向元素添加事件:

_a.addEventListener( 'click', createHandler( i ) );
于 2012-08-20T15:12:05.443 回答
2
for(var id = 0; id < 10; id++){
    var _a = document.createElement('a');
    _a.onclick = (function(id){
        return function (){
            mycode(id);
        }
    })(id);
}

那应该解决它。

于 2012-08-20T15:12:10.557 回答
1

尝试以下:

_a.onclick = (function(id){return function(){ mycode(id); }})(id);
于 2012-08-20T15:11:52.010 回答