我收到的json
看起来像这样:
Object:
bpi:206000
buyout:4120000
itemId:133564
itemName:"Spiced Rib Roast"
name:"Flipflap"
quantity:20
timeLeft:"VERY_LONG"
undercut:0
我正在通过jquery .each函数填充表。
其中一个元素设置为在按下时激活一个函数
将项目推送到表格的代码如下所示:
$.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.itemName
换出key.itemId
会使onclick功能正常工作
字符串的格式是问题吗?
如何使其与key.itemName
一起使用?
答案 0 :(得分: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*
事件属性现在已经过时,应该尽可能避免。
答案 1 :(得分:1)
您的问题是您使用的报价类型,混合使用双引号和单引号
onclick="getItemData(" + key.itemId + ",\"" + key.itemName"\")"
答案 2 :(得分:0)
onclick="getItemData(' + key.itemId + ',' + key.itemName+')"