2011-05-21 89 views
1

我在尝试动态构建一些HTML并为链接的onclick事件分配函数。下面是我得到的代码...将参数传递给onclick事件中的函数

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

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

任何帮助或指针,非常感谢。

先生B.

+0

这是奇怪的,someFunction()should't被称作...... – wong2 2011-05-21 16:14:19

+0

我的jsfiddle测试它,它工作正常:HTTP:// jsfiddle.net/sGbjD/ – wong2 2011-05-21 16:17:11

+0

我也试过... link.addEventListener(“click”,function(){someFunction(object.id);},false); – 2011-05-21 16:18:15

回答

0

你已经发布的代码工作正常 - 我只是测试它。这里有一些可能性寻找..

  1. 你在哪里定义someFunction?它是否被要求定义?
  2. 您是否在其他地方引用了一些功能?也许这就是触发问题的原因。
  3. 任何你不使用jQuery这样的JavaScript库来做这件事的原因是什么?简化很多。

一种调试方法是改变该行:

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

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

+0

警报弹出。我想,正如我前面提到的那样,这个问题出现在我正在调用的函数中。我目前没有使用jQuery,因为我对javascript很陌生,并且首先想了解gthe基础知识。 – 2011-05-21 16:32:56

+0

在你对主要帖子的评论中,你表示交换警报工作正常。由于这与我在这里所做的实际上是一样的,所以这变得相当混乱:)你能发布你的整个代码还是至少有更大的块? – jbrookover 2011-05-21 16:47:45

+0

我想我现在得到这个排序,我已经把一个警报负载,所以我知道什么是什么参数调用。我认为我最初的假设是该脚本的该部分被调用的功能是错误的,我的功能只是做了一些意想不到的事情,这似乎是这样。我现在有另一个问题(可能没有帮助!!),基本上错误的参数被传递给我的函数。我已经在SO的其他地方看到了这个地方,这个函数正在传递一个正在迭代的数组中最后一项的值。 – 2011-05-21 17:01:33

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!"));