我正在尝试创建一个引用多个表单的对象,我可以使用 JSON.stringify()
通过单个 AJAX 请求将其发送到验证脚本,但我做不到似乎正确命名了对象内部的数组,随着数组(表单)数量的增加,它应该是递增计数。
即
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
错误,以这一行为中心:
images[i].name = form.find('input[name="name"]').val();
现在,我可以将 images[i].name
的“值”更改为我喜欢的任何值 (images[i].name = 'yes'
) 并且我仍然遇到同样的错误。从句法上讲,我没有遗漏任何分号,所以不可能是这样。有没有可能我没有正确声明我的对象?
最佳答案
Images 是一个数组 ([]
)。您的语法不符合这种情况(您需要一个对象)。为数组中的每一项创建一个对象,然后您可以为该对象的属性赋值。
此外,您可以只使用 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;
}
关于javascript - 在 Javascript/jQuery 中动态添加变量名作为对象的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15358342/