变量变量(创建与另一个变量的名称变量)
我想创建一个新的变量,变量名, 例如:变量变量(创建与另一个变量的名称变量)
function preloader(imglist) {
var imgs = imglist.split("|");
for (i in imgs) {
var img_{i} = new Image; //this is the line where i sucked in!
img_{i}.src = imgs[i]; //another line where i sucked in!
}
}
preloader("asd.jpg|qwe.jpg|dorama.png");
我尝试使用数组,但是,嗯..怎么能我说...
var qwe = new Array();
qwe[1] = "asd"; //or not! whatever...
var qwe[1] = new Image; // it didnt work!
在PHPü可以使用这样的:
$var1 = "test";
$var2_{$var1} = "test last";
echo $var2_test; //or...
echo $var2_{$var1};
你并不需要不,在这里,每个Image
可以存储和覆盖得到同样的预紧效果,但是仅仅这将工作:
function preloader(imglist) {
var imgs = imglist.split("|");
for (var i=0; i<imgs.length; i++) {
new Image().src = imgs[i];
}
}
注意,我改变了这个从for in
循环,你应该使用普通索引for
循环时遍历数组(不枚举)CMS已有a great answer here更详细地解释了这一点。
嗯,它会工作,但'img'变量的作用域是函数,而不是'for'循环。 – 2010-10-19 15:24:19
@Tim - 好点,更新虽然它甚至不需要它们,除非你打算使用它。 – 2010-10-19 15:27:30
感谢您的答案,但为什么要循环?我的意思是当我像这样使用:var imgs = Array(); imgs [1] =“asd”; imgs [2] =“qwe”;/*然后*/var i; for(i in imgs){document.write(imgs [i] +“
”); } //正在工作...... –
mrtakdnz
2010-10-20 07:28:51
您可以通过使用功能,如下图所示achive你的目标;
var data = "testVariable";
eval("var temp_" + data + "= new Array();");
temp_testVariable[temp_testVariable.length]="Hello World";
alert("Array Length: " + temp_testVariable.length);
alert("Array Data: " + temp_testVariable[0]);
当然,这并不意味着这是正确的解决方案。我刚才给出了关于这个能力的信息。
这里是article包含上述示例和替代解决方案使用Window
对象。
为什么你想在变量上有一个唯一的名字?在你的例子中,我根本没有看到用户“动态变量名”的原因。只需使用普通的“var img = new Image();” – Onkelborg 2010-10-19 15:18:14
是的,你不需要唯一的名字 - 当你说'img = new Image()'时,它不会覆盖旧的img值。你不需要这个PHP怪异。 – andrewmu 2010-10-19 15:33:55