这可能很容易,但我现在无法弄清楚如何解决它。每次单击提交按钮时,下面的函数都会检查输入字段1(名称),如果不是空,则将值添加到关联数组,然后继续描述。
我想要的是每次点击都会向数组中添加一个新的1级元素,它应该包含这些值,以便三次点击后如下所示:
Click 1:
listObject[0]['listObjectName'] = 'Name 1';
listObject[0]['listObjectDesc'] = 'Desc 1';
Click 2:
listObject[1]['listObjectName'] = 'Name 2';
listObject[1]['listObjectDesc'] = 'Desc 2';
Click 3:
listObject[2]['listObjectName'] = 'Name 3';
listObject[2]['listObjectDesc'] = 'Desc 3';
功能:
$('#addListObjectSubmit').click(function (e) {
var listObjectName = $('#m_newListObject').val();
if((listObjectName == null) || (listObjectName == '')) {
return false;
}
else {
listObjects['listObjectName'] = listObjectName;
var listObjectDesc = $('#m_newListObjectDesc').val();
if ((listObjectDesc == null) || (listObjectDesc == '')) {
listObjects['listObjectDesc'] = null;
}
else {
listObjects['listObjectDesc'] = listObjectDesc;
}
}
e.preventdefault();
});
那么,处理这个问题的最佳方法是什么?
答案 0 :(得分:4)
如果忘记关联数组,它会对你有所帮助。它们理论上只存在于Javascript中。事实上,一切都是一个对象,甚至是数组。但是考虑数据存储术语,您可以使用只能以数字方式编制索引的简单array,或者使用object作为数据映射。
以下示例创建一个数组(注意更紧凑的[]
而不是new Array()
)和pushes一个地图(使用{}
创建):
var listObjects = [];
...
var newElem = {
'listObjectName' : 'Name 1',
'listObjectDesc' : 'Desc 1'
};
listObjects.push(newElem);
之后,您可以使用listObjects[0]
访问此元素,如果它是数组中的第一个元素。
如果要访问其属性,可以使用以下方法之一:
listObjects[0].listObjectName
listObjects[0]['listObjectName']
所以你可以看到,在处理对象时,你可以使用.
表示法和括号表示法 - 它们是等价的,但后一种形式使它看起来像是一个“关联数组”(来自PHP的人更多。)
答案 1 :(得分:2)
..你的意思是,你想在每次点击时向一个数组添加一个“关联数组”(它们在JavaScript中被称为“对象”,btw)?
向数组添加内容的方法是push()
:
listObject.push({
'listObjectName': 'Name X',
'listObjectDesc': 'Description X'
})