如何在javascript中使用var名称

时间:2013-03-28 11:40:47

标签: javascript variables

如何在以下代码中使用我的rand窗口名称:

var rand = 185656;
setTimeout("win+rand+2 = window.open('url'+secid , '_blank')",2000);

+ rand +无法正常工作

6 个答案:

答案 0 :(得分:2)

不要将字符串传递给setTimeout。改为传递函数并在window上显式设置全局属性,这将允许您使用方括号表示法:

setTimeout(function () {
    window["win" + rand + "2"] = window.open("url" + secid, "_blank");
}, 2000);

不将字符串传递给setTimeout(或setInterval)的原因是它是eval的别名,这可能很危险。

您目前拥有的内容会产生参考错误。它实际上就像这样做,显然永远不会起作用:

"a" + "b" = "c"; // ReferenceError: Invalid left-hand side in assignment

答案 1 :(得分:1)

必须在引号之外。

setTimeout("win"+rand+"2 = window.open('url'+secid , '_blank')",2000);

答案 2 :(得分:1)

您需要再次“打开”和“关闭”字符串:

setTimeout("win" + rand + "2 = window.open('url'" + secid + " , '_blank')",2000);

请参阅 this article 了解最基本的内容。

除此之外,您不应该将可执行代码传递给setTimeout(它将获得eval'd),使用函数引用或匿名函数来执行此操作。

此外,像这样的constructiong var名称也是一个坏主意。查看对象和键。

你可以这样做:

setTimeout(function(){
    var rand = 185656;
    window['win' + rand + '2'] = window.open('url'+secid , '_blank'); //creates a global variable by adding a property to the global object
}, 2000);

答案 3 :(得分:1)

首先,don't pass strings to setTimeout。请改用回调函数。 然后变量必须在要连接的字符串(引号)之外:

var rand = 185656;
setTimeout(function() {
    window["win" + rand + "2"] = window.open('url'+secid , '_blank');
}, 2000);

答案 4 :(得分:0)

可能是引号出问题

setTimeout("win"+parseInt(rand)+"2 = window.open('url'+secid , '_blank')",2000);

答案 5 :(得分:0)

setTimeout(“win”+ rand +“2 = window.open('url'+ secid,'_ blank')”,2000);