Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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,我正在开发一个动态表单,它根据用户输入将输入字段组附加到页面。由于其中一些元素需要附加一些附加功能,因此我需要将它们创建为JSON对象。当我仅使用一个输入元素测试此方法时,该元素将被追加到页面,没有问题。但是,当我尝试将第二个元素合并到流程中时,我会将[object object][object]附加到页面中 这里是要点 //THIS IS THE PROBLEM FUNCTION, WHICH IS TRIGGERED BY THE CHANGE FUNCTION BELOW function

我正在开发一个动态表单,它根据用户输入将输入字段组附加到页面。由于其中一些元素需要附加一些附加功能,因此我需要将它们创建为JSON对象。当我仅使用一个输入元素测试此方法时,该元素将被追加到页面,没有问题。但是,当我尝试将第二个元素合并到流程中时,我会将
[object object][object]
附加到页面中

这里是要点

//THIS IS THE PROBLEM FUNCTION, WHICH IS TRIGGERED BY THE CHANGE FUNCTION BELOW
function generateInput(siteNumber, x){

    select = $("<select/>", {
                id: 'select'+siteNumber+''+x+'',
                name: 'select'+siteNumber+'['+x+']'
                }).append(list);

    notes = $("<input/>", {
                type: 'text',
                id: 'notes'+siteNumber+''+x+'',
                name: 'notes'+siteNumber+'['+x+']'
                });


    //IF I RETURN ONE OR THE OTHER, NO PROBLEM
    return select + notes;
};

$(document).on("change", ".number_select", function(){
    siteNumber = $(this).parent().attr('data-site_number');
    numberFound = $(this).val();

    for(x = 1; x <= numberFound; x++){
        this['inputArray' + siteNumber].push(generateInput(siteNumber, x));
     };

     $(this).parent().append(this['inputArray' + siteNumber]);
});
//这是问题函数,由下面的更改函数触发
函数生成输入(站点号,x){
选择=$(“”{
id:'选择'+siteNumber+''+x+'',
名称:'选择'+siteNumber+'['+x+']'
}).附加(列表);
附注=$(“”){
键入:“文本”,
id:'注释'+siteNumber+''+x+'',
名称:'notes'+siteNumber+'['+x+']'
});
//如果我返回其中一个,没问题
返回select+notes;
};
$(文档).on(“更改”、“.number\u选择”,函数(){
siteNumber=$(this.parent().attr('data-site_number');
numberFound=$(this.val();

对于(x=1;x,
+
运算符将调用其中一个术语的
toString()
方法,如果另一个术语是字符串

这不是您想要的,您想要的是将jQuery对象合并为一个

因此

可以变成():


如果其中一个术语是字符串,则
+
运算符将调用其中一个术语的
toString()
方法

这不是您想要的,您想要的是将jQuery对象合并为一个

因此

可以变成():


如果您有两个对象并添加它们,则使用
.toString()
方法将它们转换为字符串,该方法返回字符串
“[object object]”
。这意味着这是一个对象,是
对象的实例。如果您想返回这两个对象,可以将它们作为数组返回:

return [species, notes];
然后,您可以使用以下方法将结果传递给
.push()
方法:


但是,由于
.push()
方法接受许多参数,您甚至不需要修改这部分代码。

如果您有两个对象并添加它们,则使用
.toString()
方法将它们转换为字符串,该方法返回字符串
“[object object]”
。这意味着这是一个对象,它是
对象的实例。
。如果要同时返回这两个对象,可以将它们作为数组返回:

return [species, notes];
然后,您可以使用以下方法将结果传递给
.push()
方法:


但是,由于
.push()
方法接受许多参数,您甚至不需要修改这部分代码。

notes
是一个对象。
+notes
将字符串化对象,因此
[object object]
JSON不是一个对象。JSON是一个字符串。不要将JavaScript对象称为JSON。我对它进行了修饰,使其与下面的答案一致。
notes
是一个对象。
+notes
将字符串化对象,从而
[object object]
JSON不是一个对象。JSON是一个字符串。不要将JavaScript对象称为JSON。我对它进行了修饰,使其与下面的答案一致。我接受另一个答案,因为它在表单上出现的其他一些情况下效果更好,但这是一个很好的答案。我接受另一个答案,因为它在其他一些情况下效果更好表格上出现的错误,但这是一个很好的答案。
return [species, notes];
this['inputArray' + siteNumber].push(...generateInput(siteNumber, x));