2011-12-03 43 views
0

對於按鈕,我需要在運行時設置此調用的函數以及該調用中使用的值。如果我嘗試,而不是傳遞函數表達式用作按鈕的onclick處理函數

var myfunction = /* ... */ 
var myvalue = /* ... */ 
button.setAttribute ("onclick", myfunction + "('" + myvalue + "')"); 

: 我能做到這一點,像這樣

button.setAttribute ("onclick", function() { myfunction(myvalue)); 

螢火蟲給我一個

「功能語句需要一個名字」

儘管作爲據我所知,我在這裏使用了一個函數表達式。

回答

0

你錯過了大括號。

button.setAttribute ("onclick", function() { myfunction(myvalue));

應該

button.setAttribute ("onclick", function() { myfunction(myvalue); });

但你可能不希望使用的setAttribute設置一個按鈕的onclick,嘗試button.onclick = function() { myfunction(myvalue); };代替

1
button.onclick = function() { 
    myfunction(myvalue); 
} 

使用proper event registration method會更好:

button.addEventListener('click', function() { 
    myfunction(myvalue); 
}, false); 
+0

使用.onclick很好 - 它自然是跨瀏覽器 – hugomg

+0

只要您需要多個功能,您就會遇到問題。最近的IE支持addEventListener。 – ThiefMaster

0

如果你正在考慮純JavaScript:

function attachEvent(element, event, handler) 
{ 
    if (element && element.attachEvent) { 
     element.attachEvent("on" + event, handler); 
    } 
    else if (element && element.addEventListener) { 
     element.addEventListener(event, handler, false); 
    } 
} 

用法:

attachEvent(button, "click", myFunction); 

請注意,IE需要attachEventaddEventListener不能在IE瀏覽器和適用於其他瀏覽器。所以你必須考慮到這兩個功能,以使其能夠跨瀏覽器支持

相關問題