在javascript函数中将对象作为参数传递
我想将对象作为参数传递给javascript函数和 我尝试了以下方法,实际上我正在调用函数innerHtml中的函数在javascript函数中将对象作为参数传递,javascript,jquery,Javascript,Jquery,我想将对象作为参数传递给javascript函数和 我尝试了以下方法,实际上我正在调用函数innerHtml中的函数 var tempObj={ result:results, jsobj:jsObj } str +='<input type="button" onclick="buildCstrWiseChart('+tempObj+')" value="View" class="btn btn-info">'; 有人能帮上忙吗?
var tempObj={
result:results,
jsobj:jsObj
}
str +='<input type="button" onclick="buildCstrWiseChart('+tempObj+')" value="View" class="btn btn-info">';
有人能帮上忙吗?好吧,问题出在函数
someFunc
中
下面的示例非常有效:
var f = function (el){
alert(el)
};
var x = {a: "hey", b: "ho"};
然后
没有错误。好吧,问题出在函数
someFunc
中
下面的示例非常有效:
var f = function (el){
alert(el)
};
var x = {a: "hey", b: "ho"};
然后
没有错误。NB:OP已更改自最初发布以来发布的代码 我敢打赌问题在于:
...onclick="buildCstrWiseChart('+tempObj+')"...
当tempObj
不是字符串以外的东西时,我认为这不起作用。在任何情况下这样做似乎都很危险
您真正需要做的不是将实际对象放入字符串中,而是放入一个引用它的值(可能构建一个id:object的字典),并将id作为数据属性包含在内。然后在onclick方法中,您可以查找该属性,并找到所提供ID的对象。NB:OP已更改自最初发布以来发布的代码 我敢打赌问题在于:
...onclick="buildCstrWiseChart('+tempObj+')"...
当tempObj
不是字符串以外的东西时,我认为这不起作用。在任何情况下这样做似乎都很危险
您真正需要做的不是将实际对象放入字符串中,而是放入一个引用它的值(可能构建一个id:object的字典),并将id作为数据属性包含在内。然后在onclick方法中,您可以查找该属性,并找到所提供ID的对象。您将对象视为字符串。这就是错误所在
tempObj
是全局变量吗?如果是的话,就这么做吧
str +='<input type="button" onclick="buildCstrWiseChart(tempObj)" value="View" class="btn btn-info">';`
str+=''`
您将对象视为字符串。这就是错误所在
tempObj
是全局变量吗?如果是的话,就这么做吧
str +='<input type="button" onclick="buildCstrWiseChart(tempObj)" value="View" class="btn btn-info">';`
str+=''`
对象的字符串表示形式就是[object object]
,因此,当您在构建HTML时尝试将其连接起来时,最终会得到
onclick="buildCstrWiseChart([object Object])"
这不是有效的HTML。[object
部分被解析为数组的开头,但是对象]
部分不是有效的数组语法
我建议您使用jQuery来实际创建DOM元素,而不是构建HTML字符串:
$('<input type="button"/>', {
value: 'View',
className: 'btn btn-info'
}).click(function() {
buildCstrWiseChart(tempObj);
});
$(“”{
值:“视图”,
类名:“btn btn信息”
})。单击(函数(){
建筑结构图(tempObj);
});
然后使用
.append()
或.appendTo()
jQuery函数将该元素添加到您希望它位于其中的任何包含元素中。对象的字符串表示形式就是[object object]
,因此,当您在构建HTML时尝试将其连接起来时,您最终会得到它
onclick="buildCstrWiseChart([object Object])"
这不是有效的HTML。[object
部分被解析为数组的开头,但是对象]
部分不是有效的数组语法
我建议您使用jQuery来实际创建DOM元素,而不是构建HTML字符串:
$('<input type="button"/>', {
value: 'View',
className: 'btn btn-info'
}).click(function() {
buildCstrWiseChart(tempObj);
});
$(“”{
值:“视图”,
类名:“btn btn信息”
})。单击(函数(){
建筑结构图(tempObj);
});
然后使用
.append()
或.appendTo()
jQuery函数将该元素添加到您希望它位于其中的任何包含元素中。这是有效的javascript代码,应该可以工作,请再显示一些代码,我想您的错误在其他地方。someFunc
能做什么?你怎么称呼它/你在哪里称呼它?你需要发布你的全部/实际代码,特别是带有列表的部分。语法错误应该有一个行号。您正在执行类似于eval(“someFunc”(+someObject+))
的操作吗?如果是,为什么?既然你已经编辑了这篇文章,它与最初的代码完全不同。您将对象视为字符串。这就是错误。这是有效的javascript代码,应该可以工作,再显示一些代码,我想你的错误在其他地方。someFunc
做什么?你怎么称呼它/你在哪里称呼它?你需要发布你的全部/实际代码,特别是带有列表的部分。语法错误应该有一个行号。您正在执行类似于eval(“someFunc”(+someObject+))
的操作吗?如果是,为什么?既然你已经编辑了这篇文章,它与最初的代码完全不同。您将对象视为字符串。这就是错误。你有足够的代表知道这不是答案。这是一个评论,仅仅说明给定的代码是有效的。“它对我有效”并不完全是问题的答案,因此否决票不应该让人感到意外。“这很好用”是一个完全可以接受的答案,当它包括一些证明它有效的东西时,因此可以作为问题的根源消除。如果问题是“这有什么问题?”那么“没什么”不是不回答。你有足够的代表知道这不是答案。这是一个评论,仅仅说明给定的代码是有效的。“它对我有效”并不完全是问题的答案,因此否决票不应该让人感到意外。“这很好用”是一个完全可以接受的答案,当它包括一些证明它有效的东西时,因此可以作为问题的根源消除。如果问题是“这有什么问题?”那么“没什么”不是非答案,OP需要使其全局可访问,以使对象可从内联处理程序属性访问。感谢它的工作..最初我尝试了这个..但后来它不起作用..是的,当我全局声明变量时效果很好..我能知道为什么要将该变量声明为全局..就像@squint说的,您的onclick
处理程序需要知道什么是tempObj
。因此,如果tempObj
不是全局的,则处理程序将不知道它是什么。有道理吗?@sasi: