我试图将对象传递给按钮onclick
,但它似乎无法正常工作。这就是我正在尝试的:
<input type='button' onclick='showTransreqForm(\"" + result.productsArray[i] + "\")' value='Go'>
如果我打印对象result.productsArray[i]
,就在这一行之上,我可以在javascript控制台中看到它的所有属性。
但是当我在showTransreqForm
函数中打印它时,它会显示为[object Object]
并且数据似乎不存在。
为了完成,这是showTransreqForm
函数:
function showTransreqForm(plan) {
console.log(plan);
}
我错过了什么?
编辑:这是按钮生成的代码:
var planStr = "<b>Recommended Plans</b>" + "<br><br>" +
"<form id='getTransForm' method='POST'>";
for (i = 0; i < result.productsArray.length; i++) {
console.log(result.productsArray[i]);
console.log(result.productsArray[i].get("Price"));
planStr += "plan " + (i+1) + "<br>" +
result.productsArray[i].get("CarrierName") + ": " +
result.productsArray[i].get("Price") +
"<input type='button' value='Go' onclick='showTransreqForm(\"" + result.productsArray[i] + "\")' >" +
"<br><br>";
}
planStr += "</form>";
$(".success3").append('<br />' + planStr).show();
如上所述,result.productsArray[i]
从for循环内部正确打印出来,price属性也是如此。但它没有正确传递给showTransreqForm
函数。
答案 0 :(得分:1)
这是因为你构建onclick的方式。将字符串附加到对象将导致字符串
在你的情况下&#34;&#34; +对象将导致&#34; [object Object]&#34;。
只需将您的代码更改为
<input type='button' onclick='showTransreqForm( result.productsArray[i])' value='Go'
我假设您已全局定义结果变量。