繁体   English   中英

在Javascript / jQuery中动态添加变量名称作为对象的一部分

[英]Dynamically add variable name as part of object in Javascript/jQuery

我正在尝试创建一个引用许多形式的对象,我可以使用单个AJAX请求将这些形式通过JSON.stringify()发送到验证脚本,但是我似乎无法正确命名该对象内部的数组,随着数组(窗体)数量的增加,计数应该是递增的。

var images = new Object();
var i = 0;

// loop through every form
$('form').each(function() {
   var form = $(this);

   images[i].name = form.find('input[name="name"]').val();
   images[i].description = form.find('textarea[name="description"]').val();

   // etc.

   i++;
});

因此,在说了两到三个迭代后完成(即,它经历了两到三个形式),我有一个与此类似的Javascript对象(用伪代码编写,我不太确定它的实际输出方式):

images {
   0 {
      name : 0thImageNameValueHere,
      description : 0thImageDescripValueHere,
      etc : etc
   }

   1 {
      name : 1stImageNameValueHere,
      description : 1stImageDescripValueHere,
      etc : etc
   }
}

但是,现在,Firebug给了我SyntaxError: missing ; before statement SyntaxError: missing ; before statement错误SyntaxError: missing ; before statement ,围绕此行:

images[i].name = form.find('input[name="name"]').val();

现在,我可以将images[i].name的'value'更改为我喜欢的任何值( images[i].name = 'yes' ),但仍然遇到相同的错误。 从语法上讲,我不会错过任何分号,所以不可能那样做。 我可能没有正确声明我的对象吗?

图像是一个数组( [] )。 您的语法不符合这种情况(您需要一个对象)。 为数组中的每个项目创建一个对象,然后可以为该对象的属性分配值。

另外,您可以仅使用jQuery提供的index参数,而不必创建自己的迭代器。

这就是您想要的:

var images = []; // create an array

$('form').each(function( index ) {
    var form = $(this);
    // create object with {} object notation
    var image = {
        name: form.find('input[name="name"]').val(),
        description: form.find('textarea[name="description"]').val()
    };
    images[index] = image; // append object in array position index;
}

有关对象的更多信息,请参见JSON WIKI 有关数组W3Schools的更多信息,请参见。

我不知道是否缺少任何分号,但是您需要在images[i]上创建一个对象,然后再为其分配任何属性。 即尝试此:

images[i] = { 
    name: get('input[name="name"]').val(),
    description: get('textarea[name="description"]').val()
};

您还可以使用each()提供的index参数:

$('form').each(function(i) { ... }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM