1

我有以下代码:

    data_array =  {
                      full_name: 'fullname',
                      items: [],
                      address_full: 'address'
                  };

        first = {
            'data-opPrice'  : '1a',
            'data-stdPrice' : '1b',
            'state'         : '1c'
        };
        second = {
            'data-opPrice'  : '2a',
            'data-stdPrice' : '2b',
            'state'         : '2c'
        };          
        data_array.items.push(first);
        data_array.items.push(second);

    alert(data_array['items'][1].data-opPrice);

我希望得到警报“2a”。但什么也没有发生。为什么?

4

5 回答 5

4

这是因为-data-opPrice. -是减法。

alert(data_array['items'][1]['data-opPrice']);

http://jsfiddle.net/t9c7L/1/

于 2013-01-04T19:38:20.763 回答
1

你可能想要:

data_array.items[1]['data-opPrice'];
于 2013-01-04T19:37:13.053 回答
0

尝试

alert(data_array['items'][1]['data-opPrice']);

因为否则它是一个操作(数据减去opPrice)

于 2013-01-04T19:38:33.537 回答
0

用这个:

data_array.items[1]['data-opPrice']
于 2013-01-04T19:41:48.993 回答
0

使用命名约定,不要在属性名称上使用破折号(减号)。

所以请遵循以下规则:http: //javascript.crockford.com/code.html

然后编写如下代码:

data_array =  {
                  full_name: 'fullname',
                  items: [],
                  address_full: 'address'
              };

    first = {
        'dataOpPrice'  : '1a',
        'dataStdPrice' : '1b',
        'state'         : '1c'
    };
    second = {
        'dataOpPrice'  : '2a',
        'dataStdPrice' : '2b',
        'state'         : '2c'
    };          
    data_array.items.push(first);
    data_array.items.push(second);

alert(data_array.items[1].dataOpPrice);
于 2013-01-04T19:48:23.917 回答