2009-11-11 169 views
0

我想通過下面的函數GetDetail函數來傳遞變量。我可以傳遞字符串/數字,它可以正常工作。JavaScript函數傳遞變量

但我無法通過可變

detLink.onclick = new Function ("GetDetails()"); 
detLink.setAttribute('onclick',"javascript:GetDetails()") 

回答

0
detLink.setAttribute('onclick',"javascript:GetDetails("+yourVariableName+")") 

當您設置屬性您使用字符串數據類型,因此你必須縫合函數名變量值

+0

FYI:http://webbugtrack.blogspot.com/2007/08 /bug-242-setattribute-doesnt-always-work.html – 2009-11-11 08:02:12

+0

不工作在IE中,而不是本地主機我使用IP地址,如果我寫在警報中詳細它不工作 – Ank 2009-11-11 12:19:25

5
detLink.onclick = function() { GetDetails (parameter1, parameter2, ...); } 

這是anonymous function

讀也The function expression(函數運算符)

的函數表達式類似於並且具有相同語法爲函數聲明

function [name]([param] [, param] [..., param]) { 
    statements 
} 

名稱 的函數名。可以省略,在這種情況下,函數變成 ,稱爲匿名函數。

param 要傳遞給函數的參數的名稱。函數 最多有255個參數。

陳述 構成函數主體的陳述。

-2
var val1 = "Hell world" 
detLink.onclick = GetDetails(val1); 

function GetDetails(myVar){ 
    alert (myVar); 
} 
+2

這將無法正常工作,因爲GetDetails將被稱爲期間聲明,而不是點擊後。 – jantimon 2009-11-11 07:57:28

0

如果你有機會到相關變量,當你設置的點擊處理程序,

detLink.onclick = function() { 
    GetDetails(foo); 
} 

如果不這樣做,

detLink.id = uniqueId; 
detLink.onclick = function() { 
    var foo = globalData[this.id]; 
    GetDetails(foo); 
} 

// somewhere else in your code, where you know the value of the variable 
globalData[detLink.id] = foo;