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

标签 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 一起使用?

最佳答案

问题是因为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>");

请注意在值周围添加了 \'

我还强烈建议您研究不显眼和委托(delegate)事件处理程序的使用,因为 on* 事件属性现在非常过时,应尽可能避免使用。

关于javascript - onclick 函数 - json 字符串变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40584479/

相关文章:

javascript - grunt-email-workflow Grunt 任务?

javascript - 使用 Controller 作为语法时, Controller 值不会绑定(bind)在 html 中

javascript - <ul> 导航栏中的 JS/CSS 下拉菜单

javascript - 滚动后带有过渡效果的导航栏显示

javascript - 使用 RegEx trim 文件名

javascript - Jvector map,如何聚焦在一个标记上?

jquery - 如何使用jquery改变文本框的背景颜色3秒?

c# - 我正在尝试使用 ajax 调用将上传的文件从 View 发送到 Controller ,但该文件在 Controller 中接收为 null

java - 如何使用 ucanaccess 获取查询中的行数

javascript - 检查 YouTube 流媒体视频是否直播