2013-10-27 135 views
-4

我需要的是能夠將一個字符串傳遞給JavaScript函數,該函數在一個div的onclick事件說明,如何傳遞一個字符串作爲參數傳遞給javascript函數

$("#div").html("<div id='suggestion' onclick='storetag("+response[i]['tagname']+")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

在這裏我無法將響應[i] ['tagname']傳遞給storetag(),因爲它是一個字符串,並且需要在其周圍使用quetos

回答

0

你需要把引號包圍值的字符串:

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 
+1

爲什麼downvote?如果你不解釋你認爲什麼是錯的,它不能改善答案。 – Guffa

+0

這也是正確答案+我的身邊投票。 – Manwal

+0

@BenjaminGruenbaum:除非你明確指出你認爲代碼的可怕性,否則我甚至不能對你的意見發表意見。 – Guffa

0

而不是使用內聯JS,您必須處理包含字符串,請執行以下操作:

var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
div.find('b').html(response[i]['tag']).on('click', function() { 
    storetag(response[i]['tagname']); 
}); 
$("#div").html(div); 

通過這種方式,您可以先創建DOM,然後正確附加事件處理程序,而不必將JS代碼放入字符串中。

如果你運行在一個循環的代碼(i使這可能):

  • 不要使用id="suggestion"。 ID必須是唯一的!
  • 所以當處理程序執行時使用了適當的i值使用下面的JS代碼:

    var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
    div.find('b').html(response[i]['tag']); 
    (function(tagname) { 
        div.on('click', function() { 
         storetag(tagname); 
        }); 
    })(response[i]['tagname']); 
    $("#div").html(div); 
    
+0

thanx,是它正在循環運行 和關於id是唯一的,我已經指定css規則爲id」建議「,並且我需要每個由div生成的div循環具有相同的ID,這樣我就不必爲循環產生的每個ID指定規則 –

+1

你在做什麼是**錯誤**!改爲使用CSS類!您可以根據需要在儘可能多的元素上使用它們。 – ThiefMaster

+0

嗯,永遠不會考慮tht, thnx again –

0

試試這個

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

在這裏我添加\「在您的代碼

+0

這是正確的答案,你是唯一一個閱讀過這個問題的人。 –

+0

thanku @web_bod非常感謝。 Appriciated。你也可以接受這個答案。 – Manwal

+0

@DeepakManwal Thanx,問題解決了 –

相關問題