[英]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.