onclick函数 - json字符串变量不起作用

时间:2016-11-14 08:24:01

标签: javascript jquery

我收到的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一起使用?

3 个答案:

答案 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+')"