将对象传递给onclick

时间:2014-10-17 09:01:01

标签: javascript html onclick

我试图将对象传递给按钮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函数。

1 个答案:

答案 0 :(得分:1)

这是因为你构建onclick的方式。将字符串附加到对象将导致字符串 在你的情况下&#34;&#34; +对象将导致&#34; [object Object]&#34;。
只需将您的代码更改为

<input type='button' onclick='showTransreqForm( result.productsArray[i])' value='Go'

我假设您已全局定义结果变量。