Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript函数中将对象作为参数传递_Javascript_Jquery - Fatal编程技术网

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

在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">'; 有人能帮上忙吗?

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

我尝试了以下方法,实际上我正在调用函数innerHtml中的函数

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: