缺少:在属性id-javascript之后

missing : after property id - javascript

本文关键字:id-javascript 之后 属性 缺少      更新时间:2023-09-26

我有一个我认为很简单的函数,但我不知道这里缺少了什么。我得到的错误是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;
}

不能创建这样的对象-对象文字中的"键"必须是常量,而不是变量或表达式。

如果密钥是一个变量,则需要类似数组的语法:

myArray[key] = value;

因此您需要:

var data = {};  // empty object
data[$(this).attr('id')] = $(this).val();

然而,由于您的所有字段实际上都是普通的HTMLInputElementHTMLTextAreaElement对象,因此您应该真正使用它,并避免那些昂贵的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;
}

您不能像那样动态构建属性名称。

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;
}
var data = {};
data[$(this).attr('id')] = $(this).val();

请使用它。否则你想做某种评估。。。

尝试将其更改为.

var data = {};
data[$(this).attr('id')] = $(this).val();

试试这个:

function ArrayPush($group) {
    var arr = new Array();
    $group.find('input[type=text],textarea').each(function () {
        arr[$(this).attr('id')] = $(this).val();
    });
    return arr;
}