2011-12-22 59 views
0
function test() { 
    var id = 123; 
    var id12 = 'abcd'; 
    var childDiv = ""; 
    childDiv += '<div style="width:20px;height:20px" onclick="newsClicked('+id12+')">Click</div>'; 

    $("#mydiv").append(childDiv); 

} 

function newsClicked(param) { 
    alert(param); 
} 

上面是測試函數,test()是我在測試div的onClick事件中調用的函數。如果我通過身份證,這是一個數字(整數)它的工作原理,如果我通過 字符串它說參考錯誤。它與我的猜想有關。如何解決它。 這裏發生了什麼?將參數傳遞給javascript函數失敗

回答

2

變化:

childDiv += '<div style="width:20px;height:20px" onclick="newsClicked('+id12+')">Click</div>'; 

childDiv += '<div style="width:20px;height:20px" onclick="newsClicked(\''+id12+'\')">Click</div>'; 

當您將追加childDiv一日一整數作爲參數傳遞給div的結果將是:

<div style="width:20px;height:20px" onclick="newsClicked(3)">Click</div> 

這是正確的,在字符串的結果將是:

<div style="width:20px;height:20px" onclick="newsClicked(string_as_arg)">Click</div> 

這是不好的,因爲string_as_arg不是最後不在範圍內的變量。這就是爲什麼你應該把它放在撇號中。然後正確的結果將是:

<div style="width:20px;height:20px" onclick="newsClicked('3')">Click</div> 
<div style="width:20px;height:20px" onclick="newsClicked('string_as_arg')">Click</div> 

所以沒有真正的整型常量字符串,但的情況下,大的區別,現在被正確識別爲字符串不是變量。

+0

謝謝,懂了工作,但我沒有得到究竟是什麼問題,要作爲一個字符串傳遞參數,我們需要逃避它,爲什麼呢? – sat 2011-12-22 11:19:08

+0

@sat,檢查我的編輯。我已經添加了解釋。 – 2011-12-22 11:23:26

+0

@sat你傳遞這個字符串作爲一個字符串,但僅用於連接將在稍後執行的不同代碼語句。 – 2011-12-22 11:29:26

1

它,當你傳遞一個number因爲number不需要在quotesstring必須處於quotes工作。所以要通過字符串,你應該使用escape焦炭"\"

類似:

newsClicked(\''+id12+'\') 
1

你的問題,

如何解決它。

*注意:你可以看到像\''+id12+'\'下面的代碼

function test() { 
    var id = 123; 
    var id12 = 'abcd'; 
    var childDiv = ""; 
    childDiv += '<div style="width:20px;height:20px" onclick="newsClicked(\''+id12+'\')">Click</div>'; 

    $("#mydiv").append(childDiv); 

} 

function newsClicked(param) { 
    alert(param); 
} 

請告訴我發生的事情居然在這裏? DIV後點擊它最近被添加到DOM

newsClicked功能將解僱, 它將加入到DOM像

<div onclick="newsClicked(abcd)" style="width: 20px; height: 20px;">Click</div> 

這裏,ABCD是使用像變量,但真實並不存在。

,你會得到錯誤,如

ABCD沒有定義

,但如果你把ID變量,它是整數,這將增加對DOM像

<div onclick="newsClicked(123)" style="width: 20px; height:20px;">Click</div> 

這在語法上是完全正確的。

我猜你現在明白了。

乾杯,

+0

好吧,所以如果傳遞了整數,它將作爲值,而不是變量,這就是爲什麼它工作!唷! – sat 2011-12-22 11:28:38