我想动态地动态创建和引用一些变量,但我不理解如何。
以下是我认为'应该'的工作,但我知道不会。
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();
}
}
我愿意接受建议。提前谢谢。
答案 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
在函数内创建。