将参数传递给onclick事件中的函数

时间:2011-05-21 16:10:08

标签: javascript

我正在尝试动态构建一些HTML并为链接的onclick事件分配一个函数。这是我得到的代码......

link = document.createElement("a");
link.setAttribute("href", "#");
link.onclick = function(){someFunction(myObject.id);};
link.appendChild(document.createTextNode("Click Me!"));

我的研究表明我将函数调用包装在一个匿名函数中,就像我所做的那样。我发现的是,当这个脚本运行而不是click事件时,我的函数被调用。这似乎是一个常见的问题,但我遵循了迄今为止我发现的所有建议,但无济于事。

非常感谢任何帮助或指示。

B先生。

2 个答案:

答案 0 :(得分:1)

也许尝试这种替代方法:

function someFunction(id) {
    return function() {
        alert(id);
    };
}

link = document.createElement("a");
link.setAttribute("href", "#");
link.onclick = someFunction(myObject.id);
link.appendChild(document.createTextNode("Click Me!"));

答案 1 :(得分:0)

您发布的代码运行正常 - 我刚测试过它。这里有一些寻找的可能性..

  1. 你在哪里定义了someFunction?它被定义了吗?
  2. 你在其他任何地方引用someFunction吗?也许这就是引发这个问题的原因。
  3. 你没有使用像jQuery这样的javascript库来做这个吗?简化了很多。
  4. 一种调试方法是将该行更改为:

    link.onclick = function(){alert('test'); someFunction(myObject.id);};
    

    警报是否突然出现?我的猜测不是,建议上面的#1和#2。随意发布更多代码,我们可以在其他地方查找错误。