2011-05-21 65 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!")); 
相關問題