2011-06-02 17 views
4

我試圖像「108-17-014」的值傳遞給通過的onClick功能...傳遞帶連字符的字符串被評價爲一個整數(減法!)的js

hyphenatedId = "107-17-14" 
dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction("+ hyphenatedId +");'>link title</a>"; 

而且裏面class.exampleFunction,

exampleFunction : function (hyphenatedId) { 
    console.log(hyphenatedId); 
} 

然而,當我點擊鏈接時,的console.log不顯示「107-17-14」,而是表示76 ...因爲它是解釋連字符減法運算。

如何防止這種情況發生?任何其他建議,歡迎=)

回答

7

通作爲字符串

dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction(\""+ hyphenatedId +"\");'>link title</a>"; 
+0

感謝您的智慧=) – sova 2011-06-02 19:20:49

2

要動態創建在運行時在onclick的文本,所以你最終得到這樣的容貌:

<a href='javascript:void(0);' onClick='class.exampleFunction(107-17-14);'>link title</a> 

那麼,你可以看到爲什麼這些值首先被減去 - 在上面的JavaScript中沒有什麼可以表明它實際上是一個字符串。所有你需要做的是包裹在參數報價:

dialogBody += " <a href='javascript:void(0);' onClick='class.exampleFunction(\""+ hyphenatedId +"\");'>link title</a>"; 

注意,你必須逃離報價,否則就會把它當作你的字符串建設的終點。

+0

感謝=)你的解釋是非常好的 – sova 2011-06-02 19:51:22

1

由於以前的海報指出,如果ID = 「3-2-1」,則:

'f('+id+')' 

計算得到字符串:

'f(3-2-1)' 

這則計算結果爲:

f(0) 

什麼時候你想要的是:

'f("3-2-1")' 

應開始爲:

'f("'+id+'")' 

評估到:

f("3-2-1") 
+0

很有見地。我讚賞這種減少,因爲用= D左右的字符更容易看清楚 – sova 2011-06-02 19:52:07