【问题标题】:pass variable into javascript object将变量传递给 javascript 对象
【发布时间】:2010-07-22 13:16:18
【问题描述】:

你能帮我解决我的问题吗

我有以下 JavaScript 对象:

var data = {                                   

    'rows[0][name]':    'foshka',
    'rows[0][tel]':    '096',
    'rows[0][opt]':    'none'

};

问题是我在尝试将变量作为行索引传递时出错:

var i = 0;
var data = {                                   

    'rows['+ i +'][name]':   'one',
    'rows['+ i +'][tel]':    '096',
    'rows['+ i +'][opt]':    'none'

};

提前致谢

【问题讨论】:

  • 为什么属性名都是字符串?
  • 这是合法的语法,虽然我有一种感觉,他没有做他认为他正在做的事情。
  • 您遇到什么错误?这实际上是一个错误,还是数据不像您预期​​的那样?

标签: javascript


【解决方案1】:

你的代码必须是

var data = {};
data[ 'rows['+ i +'][name]' ] = 'one';
data[ 'rows['+ i +'][tel]' ] = '069';

但是你可能想把你的结构改成这样:

var data ={};
var i = 0;
data['rows'][i]['name'] = 'one';

甚至更干净:

var data = { rows[] };

var i = 0;
data['rows'][i] = { 'name' : 'one', 'tel' : 069' };

// so you can access them like this:
alert ( data['rows'][i]['name'] );

【讨论】:

  • 除非先定义data['rows']data['rows'][i],否则第二个结构会抛出错误。
  • 请将其更改为选项二 - 目前这是对编程的犯罪 :)
  • 不需要使用括号符号来定义疯狂的对象属性。只有在访问所述属性时才需要。
【解决方案2】:

我认为你的数据应该是这样的:

var data = {
  rows: [{
    name: 'one',
    tel: '096',
    opt: null
  }]
};

这样您可以在需要时简单地添加新行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多