如何在以下代码中在窗口名称中使用我的 rand:
var rand = 185656;
setTimeout("win+rand+2 = window.open('url'+secid , '_blank')",2000);
+rand+ 不工作
如何在以下代码中在窗口名称中使用我的 rand:
var rand = 185656;
setTimeout("win+rand+2 = window.open('url'+secid , '_blank')",2000);
+rand+ 不工作
不要将字符串传递给setTimeout
. 而是传递一个函数并在 上显式设置您的全局属性window
,这将允许您使用方括号表示法:
setTimeout(function () {
window["win" + rand + "2"] = window.open("url" + secid, "_blank");
}, 2000);
不将字符串传递给setTimeout
(or setInterval
) 的原因是它是 的别名eval
,这可能很危险。
您当前拥有的内容将产生参考错误。它实际上就像这样做,这显然永远不会起作用:
"a" + "b" = "c"; // ReferenceError: Invalid left-hand side in assignment
它必须在引号之外。
setTimeout("win"+rand+"2 = window.open('url'+secid , '_blank')",2000);
您需要再次“打开”和“关闭”字符串:
setTimeout("win" + rand + "2 = window.open('url'" + secid + " , '_blank')",2000);
有关非常基础的信息,请参阅这篇文章。
除此之外,您不应该将可执行代码传递给setTimeout
(它将得到eval
'd),请使用函数引用或匿名函数来执行此操作。
此外,像这样构造 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);
首先,不要将字符串传递给 setTimeout。请改用回调函数。然后变量必须在要连接的字符串(引号)之外:
var rand = 185656;
setTimeout(function() {
window["win" + rand + "2"] = window.open('url'+secid , '_blank');
}, 2000);
可能是报价有问题
setTimeout("win"+parseInt(rand)+"2 = window.open('url'+secid , '_blank')",2000);
setTimeout("win" + rand + "2 = window.open('url'+secid , '_blank')",2000);