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