如何在以下代码中使用我的rand窗口名称:
var rand = 185656;
setTimeout("win+rand+2 = window.open('url'+secid , '_blank')",2000);
+ rand +无法正常工作
答案 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);