繁体   English   中英

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

[英]Passing Objects as Parameters in javascript function

我想将对象作为参数传递给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])

谁能帮上忙..

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

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

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

对象的字符串表示形式只是[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函数将该元素添加到希望包含在其中的任何包含元素的元素中。

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

我敢打赌这个问题是这样的:

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

tempObj不是字符串而不是其他东西时,我认为这不起作用。 无论如何似乎都是危险的。

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

好吧,问题出在您的函数someFunc

以下示例可以很好地工作:

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

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

然后

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

没有错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM