在for语句中使用动态变量

时间:2010-06-22 22:19:43

标签: javascript jquery

我想动态地动态创建和引用一些变量,但我不理解如何。

以下是我认为'应该'的工作,但我知道不会。

var weeks = 4;
 for(i=0; i<weeks.length;i++){
  var 'week_'+i = valueFromXML;
}



function wtFn (){
  'week_'+i.splice(-1, 1);
  if('week_'+i.length <=0){
    $(this).parent().parent().slideUp();
  }
}

我愿意接受建议。提前谢谢。

3 个答案:

答案 0 :(得分:2)

如果不使用eval,则无法动态声明变量,这不是一种好习惯。

我建议您使用对象将值存储为属性:

var weeks = 4;
var obj = {};
for(var i = 0; i< weeks; i++){
  obj['week_'+i] = valueFromXML;
}

然后您可以访问以下属性:

alert(obj['week_'+i]);

答案 1 :(得分:1)

您想要使用数组。

var weeks = new Array();

for(i=0; i < weeks.length;i++) {
  weeks[i] = valueFromXML;
}

答案 2 :(得分:0)

正如其他人所说,数组或对象是可行的方法。但如果你真的必须,你可以创建动态变量 - 或者你创建全局对象的成员window。假设这是在浏览器中执行,请执行以下操作:

var weeks = 4;
 for(i=0; i<weeks.length;i++){
  var window['week_'+i] = valueFromXML;
}



function wtFn (){

  window['week_'+i].splice(-1, 1);
  if(window['week_'+i].length <=0){
    $(this).parent().parent().slideUp();
  }
}

这是有效的,因为在浏览器中,window['xyz']将返回与xyz相同的对象(假设xyz未使用关键字var在函数内创建。