如何在使用javascript生成的锚标记上添加onclick事件?

时间:2012-08-20 15:08:30

标签: javascript

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

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

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

现在我想为此标记添加onclick。我试过以下:

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

该函数适用于此但锚点标记是在循环中创建的...因此mycode(id)始终采用循环的最后一个值。

任何人都可以帮助我吗?

3 个答案:

答案 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);