0

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

我尝试过以下方法,实际上我正在调用函数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

4 回答 4

4

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

tempObj全局变量吗?如果是这样,就这样做

str +='<input type="button" onclick="buildCstrWiseChart(tempObj)" value="View" class="btn btn-info">';`
于 2013-05-02T14:41:32.397 回答
2

对象的字符串表示形式就是[object Object]这样,当您在构建 HTML 时尝试连接它时,您最终会得到

onclick="buildCstrWiseChart([object Object])"

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

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

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

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

于 2013-05-02T14:43:35.337 回答
0

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

我敢打赌,问题在于:

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

我认为当tempObj不是字符串以外的其他东西时那会起作用。在任何情况下都这样做似乎很危险。

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

于 2013-05-02T14:34:02.723 回答
-1

好吧,问题出在你的功能someFunc上。

下面的例子工作得很好:

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

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

然后

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

没有错误。

于 2013-05-02T14:33:54.487 回答