3

这可能很容易,但我现在不知道如何解决它。每次单击提交按钮时,下面的函数都会检查输入字段 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();
        });

那么,处理这个问题的最佳方法是什么?

4

2 回答 2

5

如果您忘记关联数组,它将对您有所帮助。它们仅理论上存在于 Javascript 中。事实上,一切都是对象,甚至是数组。但是从数据存储的角度考虑,你可以使用一个只能用数字索引的简单数组,也可以使用一个对象作为数据映射。

以下示例创建一个数组(注意更紧凑[]的而不是new Array())并将地图(使用 创建){}入其中:

var listObjects = [];
...
var newElem = {
    'listObjectName' : 'Name 1',
    'listObjectDesc' : 'Desc 1'
};
listObjects.push(newElem);

之后,listObjects[0]如果它是数组中的第一个元素,您可以使用 访问该元素。

如果要访问其属性,可以使用以下之一:

listObjects[0].listObjectName
listObjects[0]['listObjectName']

所以你可以看到,在处理对象时,你可以使用.符号和括号符号——它们是等价的,但后一种形式使它看起来像是一个“关联数组”(对于来自 PHP 的人来说更是如此) .

于 2012-10-25T22:14:20.170 回答
2

..您的意思是,您想在每次点击时将“关联数组”(它们在 JavaScript 中称为“对象”,顺便说一句)添加到数组中?

向数组添加东西的方法是push()

listObject.push({
    'listObjectName': 'Name X',
    'listObjectDesc': 'Description X'
})
于 2012-10-25T22:16:02.143 回答