2016-11-14 61 views
1

json我收到這個樣子的:的onclick功能 - JSON字符串變量不工作

Object: 
bpi:206000 
buyout:4120000 
itemId:133564 
itemName:"Spiced Rib Roast" 
name:"Flipflap" 
quantity:20 
timeLeft:"VERY_LONG" 
undercut:0 

我通過jQuery的。每個函數填充表。
其中一個元素被設置爲按下時觸發某個功能。
代碼推項目表看起來是這樣的:

$.each(data, function(i, key){ 
    items.push('<tr class="tr1"><td><a onclick="getItemData(' + key.itemId + ',' + key.itemName')" rel="item=' + key.itemId + '"">' + key.itemName + '</a>' + "</td><td>" + getAmount(key.buyout) + "</td><td>" + key.quantity + "</td><td>" + ifUndercut(key.undercut) + "</td><td>" + key.timeLeft.replace('_', ' ') + "</td></tr>"); 
}); 

問題是與這塊代碼:

onclick="getItemData(' + key.itemId + ',' + key.itemName')" 

這段代碼給缺少語法錯誤的各種變化。
用另一個key.itemId替換key.itemName使onclick函數可以工作。
這是問題的字符串的格式?
我如何使它與key.itemName一起使用?

+0

'JSON的我接收看起來像這樣 - 有問題,那是不是JSON –

回答

4

問題是因爲itemName是一個字符串,因此輸出時需要用引號括起來。你也錯過了一個+連接字符串後的值。試試這個:

items.push('<tr class="tr1"><td><a onclick="getItemData(' + key.itemId + ',\'' + key.itemName + '\')" rel="item=' + key.itemId + '"">' + key.itemName + '</a>' + "</td><td>" + getAmount(key.buyout) + "</td><td>" + key.quantity + "</td><td>" + ifUndercut(key.undercut) + "</td><td>" + key.timeLeft.replace('_', ' ') + "</td></tr>"); 

請注意在值附近增加了\'

我也強烈建議您研究不引人注意和委託事件處理程序的使用,因爲on*事件屬性現在已經過時,應儘可能避免。

+0

所以,爲什麼不''('').addClass('tr1')'而不是''''? –

+0

謝謝,那是做的。我不知道我可以使用\。我嘗試了所有我能想到的「和」的組合。 – user45706

+0

@TânNguyễn你也可以這樣做,雖然它只是使上面的例子非常冗長。如果你有這麼多的HTML添加到DOM我建議你看一個模板庫 –

1

你的問題是類型您使用引號,雙人和單引號

onclick="getItemData(" + key.itemId + ",\"" + key.itemName"\")" 
0

你錯過了+運營商的混合: 更新這一項:

 onclick="getItemData(' + key.itemId + ',' + key.itemName+')" 
+1

你的回答有用嗎? –

+0

首先,OP沒有給出任何跡象表明他們正在使用角。其次,即使他們有你的示例代碼是完全不相關的他們的問題 –

+0

哎呀抱歉,我粘貼在錯誤的一面。讓我改變答案。 通過使用委託功能可以獲得動態html上的actully click事件。 –