我有一个字符串对象(实际上是一个时间),但似乎只允许将整数传递给函数
不,但是数字(以及布尔值、null 和 undefined)是唯一的原语,eval
如果它们被字符串化,它们将为自己产生一个可用的值。做一个console.log(displayBidder)
看看你正在生产什么 html。如果 id 是数字,它将变为
<button … onClick='decline(1, 2) '>Decline</button>
但如果它们是字符串,它会变成
<button … onClick='decline(one, two) '>Decline</button>
(这是变量!)如果你使用(非数组)对象,它甚至会是
<button … onClick='decline([object Object], [object Object]) '>Decline</button>
这意味着您需要正确序列化这些值,以便可以解释它们。JSON.stringify
可以这样做,但有一个更好的解决方案:
使用适当的事件处理程序。内联事件属性不被批准,特别是如果由 js 创建。相反,使用
$("#display")
.html(displayBidder)
.append($("<button class='btn'>Decline</button>").on("click", /*(function(i) {
return*/ function(event) {
alert( obj.Data[i].jobid );
// and do whatever you want
}/*;
})(i)*/));
i
如果您在循环中使用此代码段并且在执行处理程序时已更改,请取消注释 IEFE 。请参阅循环内的 JavaScript 闭包 - 简单实用的示例进行解释