在javascript函数中将对象作为参数传递

时间:2013-05-02 14:28:52

标签: javascript jquery

我想将Objects作为参数传递给javascript函数和

我曾尝试过以下内容,实际上iam在innerHtml中调用函数函数。

var tempObj={
        result:results,
        jsobj:jsObj
    }

    str +='<input type="button" onclick="buildCstrWiseChart('+tempObj+')" value="View" class="btn btn-info">';

但这对我来说不起作用我得到的错误就像..

SyntaxError: missing ] after element list
[Break On This Error]   

buildCstrWiseChart([object Object])

任何人都可以帮忙...

4 个答案:

答案 0 :(得分:4)

您将对象视为字符串。这是错误。

tempObj是全局变量吗?如果是这样,请执行

str +='<input type="button" onclick="buildCstrWiseChart(tempObj)" value="View" class="btn btn-info">';`

答案 1 :(得分:2)

对象的字符串表示只是[object Object]所以当您在构建HTML时尝试连接它时,最终会得到

onclick="buildCstrWiseChart([object Object])"

这是无效的HTML。 [object部分被解析为数组的开头,但Object]部分不是有效的数组语法。

我建议您使用jQuery实际创建DOM元素,而不是构建HTML字符串:

$('<input type="button"/>', {
    value: 'View',
    className: 'btn btn-info'
}).click(function() {
    buildCstrWiseChart(tempObj);
});

然后使用.append().appendTo() jQuery函数将该元素添加到您希望它包含在内的任何包含元素。

答案 2 :(得分:0)

注意:OP已更改自最初发布以来发布的代码。

我打赌问题是这个:

...onclick="buildCstrWiseChart('+tempObj+')"...

tempObj不是字符串以外的其他内容时,我认为这不起作用。在任何情况下似乎都很危险。

您真正需要做的是将实际对象放在字符串中,放入引用它的值(可能构建id:object的字典),并将id作为数据属性包含在内。然后在您的onclick方法中,您可以查找该属性,并找到所提供ID的对象。

答案 3 :(得分:-1)

嗯,问题在于你的函数someFunc

以下示例完美无缺:

var f = function (el){
    alert(el)
};

var x = {a: "hey", b: "ho"};

然后

f('hi');
f(x);

没有错误。