[英]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.