2012-06-24 45 views
0

我有一個div,它可以調用javascript函數。但是當我用它的參數調用javascript時,它沒有這樣做。這很奇怪。使用自變量傳遞Javascript函數失敗

這下面的代碼調用上點擊按鈕「交易」

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals()">Deals</button></a></div>'); 

function deals(){ 
alert("This works"); 
} 

但下面的代碼不能正常工作的功能的交易()。

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals(mallName)">Deals</button></a></div>'); 

function deals(NameOfMall){ 
alert("This does not work"); 
} 

我認爲這應該是一個小問題,但只是無法弄清楚。請幫助我出色的編碼器!非常感謝!

+0

發佈您的其他代碼以及。這不是問題的根源。 – Blender

+0

定義的mallName變量在哪裏?除非它是一個全局變量,否則我不會期望它可以通過內聯的'onclick'處理程序訪問。 – nnnnnn

回答

0

你必須使用周圍mallName

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals(\'mallName\')">Deals</button></a></div>'); 

function deals(NameOfMall){ 
    alert("This does not work"); 
} 
+0

mallName是一個變量,我曾嘗試以下, 交易( '+ mallName +') 交易( 「 '+ mallName +'」) – LINGS

+0

作品非常感謝這兩個沒有工作! 'onclick =「deals(\''+ mallName +'\')」' – LINGS

+1

@LINGS在你的情況下,'\'''和''''和'\'\''是相同的。解決你的問題的唯一方法是'mallName'應該是一個字符串,而不是一個字符串。 '''+ variable +'''在一個字符串中變量變量的值。 –

0

報價如果mallName是不確定時的onclick被觸發(我懷疑它是)不會發生警報。

+0

哦!我實際上是從JSON文件中讀取mallName。在我使用chrome開發人員工具進行檢查時加載頁面後,我看到了爲每個商場名稱在交易(mallName)內定義的值。這意味着我相信mallName被定義爲 – LINGS

0

打開你的borwser(如果使用IE)的JavaScript錯誤,看看它是否顯示錯誤。如果是,那麼你需要首先聲明變量。

所以這取決於這個javascript放置在哪裏。代碼中顯示了什麼,錯誤是由於變量未定義。

+0

事情是,即使我硬編碼一個mallName javascript仍然沒有觸發。 例如:'onclick =「交易(」Lechmere Mall「)」' 即使這樣也無法運作。它只在內部沒有參數時才起作用。 – LINGS

+0

LINGS - 這不起作用,因爲您使用了錯誤的引號。如果您想使用硬編碼值進行測試,請嘗試'onclick =「交易(\'Lechmere Mall \')」'。 (請注意,單引號需要用反斜槓轉義,因爲它們在單引號字符串中。) – nnnnnn

+0

作品非常感謝! 'onclick =「deals(\''+ mallName +'\')」' – LINGS

0

您的代碼正在工作..檢查mallName是否已初始化..它可能未定義。

+0

_「您的代碼正在運行」_ - 嗯?OP表示代碼不工作。 – nnnnnn

+0

看到這個http://jsbin.com/enames/edit#javascript,html,live – Medona

+0

當然,它適用於你,因爲你已經將'mallName'定義爲具有值的全局變量,也就是說,關於OP沒有顯示的代碼的假設。雖然OP在各種註釋中提供了額外的信息,但仍未清楚說明'mallName'的聲明或其值如何設置 - 如果它是函數內的局部變量,則內聯事件處理程序將無法訪問它... – nnnnnn

0
onclick="deals("Lechmere Mall")" //wont work. 

請與

onclick="deals(\'Lechmere Mall\')" //will work. 

其工作的罰款。

檢查mallName是否使用alert初始化。

alert(mallName); 
$("#content").append('<div class="malldetails"><a href="javascript:void(0);"> 
<button class="left" onclick="deals(mallName)">Deals</button></a></div>'); 

function deals(NameOfMall){ 
alert("This does not work"); 
}