2013-03-05 14 views
0

我正在構建一個帶JavaScript函數的HTML片段,它注入到一個div中。使用javascript構建HTML並傳遞一個變量(onclick函數) - 引用/雙引號語法問題

無法弄清楚如何動態地爲傳入的變量執行引號/雙引號封裝。

var vLC = "zh-CN" 

var vHtml = "<input type='radio' id='rbtn1' onclick='renderList(" + vLC + ");' />"; 

此代碼呈現:onclick =「renderList(zh-CN);」

我需要它來渲染:onclick =「renderList('zh-CN');」

那裏有哪些天才知道守則?

回答

0

www.jsbin.com來救援! - 感謝雷米夏普@rem :-D

解決方案是爲onclick動作使用一個變量。

var vLanguageCode = "us-EN"; 
var vOnclick = 'renderList("' + vLanguageCode + '")'; 
vHtml = "<input type='radio' id='rbtn1' onclick=" + vOnclick + " />"; 

簡單,再簡單...

+0

是的,這是更好的字符串糖化。 – iGanja 2013-03-06 00:58:16

+0

*是*字符串混搭。 – Quentin 2013-03-06 08:08:44

+0

是的 - 它的工作原理:-)有時候,錘子,有時候是優雅的博士 – Charlez 2013-03-08 01:42:38

2

不要通過將字符串混合在一起來修改文檔。保持價值是更加痛苦的。

var element = document.createElement('input'); 
element.type = "radio"; 
element.id = "rbtn1"; 
element.addEventListener('click', function() { 
    renderList(vLC); 
}); 

這是一條通用規則。如果你在處理另一種語言(編程,模板,數據序列化等),你會遇到痛苦。當你添加另一層(JS裏面的JS內部的JS)時,你會感到非常痛苦。

總是使用API​​來構建文檔,或者依次構建每個圖層,並在通過轉義例程運行後將其添加到下一個圖層。

+0

我需要語法 - 而不是另一個計劃。只需要在特定用例的jqGrid插件中將html注入到div中即可。 – Charlez 2013-03-06 00:16:17

+0

Quentin - 我以另一種方式解決了這個問題 - 但同意你的一般規則:-) – Charlez 2013-03-06 01:15:44

+0

@Charlez,Quentin只是指出這不是最佳做法,不是你不可以。我會建議一種類似的方法,以免與醜陋的代碼相關聯。注入html vs直接操作dom,有幾個原因是不好的。 – technosaurus 2013-03-06 01:17:18

0
var vLC = "zh-CN" 

var vHtml = "<input type=\"radio\" id=\"rbtn1\" onclick=\"renderList('" + vLC + "');\" />"; 
+0

這看起來應該工作(雖然你需要相信'vLC'永遠不會包括一個'''字符),但「Eugh!」 – Quentin 2013-03-06 00:07:03

+0

約定的昆汀,但我只是回答他的問題。我認爲你的解決方案更好,但有些人只是想要他們想要的東西... – iGanja 2013-03-06 00:10:40

+0

看起來像它的工作,實際上是兩個不同的野獸。 – Charlez 2013-03-06 00:19:36