我认为这是一个简单的功能,但我无法弄清楚我在这里缺少什么。我得到的错误是missing : after property id
,它引用了:
var data = { "'" + $(this).attr('id') + "'" : "'" + $(this).val() + "'" };
这是功能:
function ArrayPush($group) {
var arr = new Array();
$group.find('input[type=text],textarea').each(function () {
var data = { "'" + $(this).attr('id') + "'" : "'" + $(this).val() + "'" };
arr.push(data);
});
return arr;
}
答案 0 :(得分:9)
您不能创建这样的对象 - 对象文字中的“键”必须是常量,而不是变量或表达式。
如果键是变量,则需要类似于数组的语法:
myArray[key] = value;
因此你需要:
var data = {}; // empty object
data[$(this).attr('id')] = $(this).val();
但是,由于所有字段实际上都是普通的HTMLInputElement
或HTMLTextAreaElement
对象,因此您应该使用它并避免那些昂贵的jQuery调用:
var data = {}; // empty object
data[this.id] = this.value;
我还要问你为什么要创建一个对象数组 - 因为键应该都是唯一的,我通常希望返回一个对象:
function formObjectBuild($group) {
var obj = {};
$group.find('input[type=text],textarea').each(function () {
obj[this.id] = this.value;
});
return obj;
}
答案 1 :(得分:1)
您无法像这样动态构建属性名称。
function ArrayPush($group) {
var arr = new Array();
$group.find('input[type=text],textarea').each(function () {
var data = {};
data [$(this).attr('id')] = $(this).val();
arr.push(data);
});
return arr;
}
答案 2 :(得分:1)
var data = {};
data[$(this).attr('id')] = $(this).val();
改用它。否则你会尝试做某种评估...
答案 3 :(得分:1)
尝试将其更改为。
var data = {};
data[$(this).attr('id')] = $(this).val();
答案 4 :(得分:-1)
试试这个:
function ArrayPush($group) {
var arr = new Array();
$group.find('input[type=text],textarea').each(function () {
arr[$(this).attr('id')] = $(this).val();
});
return arr;
}