gpt4 book ai didi

Javascript:连续打开窗口问题

转载 作者:行者123 更新时间:2023-11-28 16:29:15 25 4
gpt4 key购买 nike

这是我的 html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Something</title>
</head>
<body>
<a href="http://www.google.com">Try Me!</a>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
$("a").click(function(event){
for(id=0;id<=10;id++){
setTimeout(function() {
var local_id = id;
window.open("http://www.mysite.com/characterID="+local_id,"", "win"+local_id, "width=100,height=100,resizable");
}, 3000*id);
}
event.preventDefault();
});

</script>
</body>
</html>

此链接将在下一个窗口后 3 秒打开每个窗口。

这是我需要的行:http://www.mysite.com/characterID=1, <a href="http://www.mysite.com/characterID=2" rel="noreferrer noopener nofollow">http://www.mysite.com/characterID=2</a>, <a href="http://www.mysite.com/characterID=3" rel="noreferrer noopener nofollow">http://www.mysite.com/characterID=3</a>...

但它总是打开http://www.mysite.com/characterID=11

如何修复它?

谢谢...

最佳答案

这是一个常见问题。

您在循环中覆盖 local_id,并且在代码运行时始终引用相同的变量。这是因为 JavaScript 没有 block 作用域,只有函数作用域。

因此,要确定 id 的范围,您需要调用一个函数,并在其中定义变量(或函数参数)。

function createWindow(local_id) {
setTimeout(function () {
window.open("http://www.mysite.com/characterID=" + local_id, "", "win" + local_id, "width=100,height=100,resizable");
}, 3000 * local_id);
}

for (id = 0; id <= 10; id++) {
createWindow(id);
}
<小时/>

或者类似的模式是让函数返回一个函数到循环。

function createWindow(local_id) {
return function() {
window.open("http://www.mysite.com/characterID=" + local_id, "", "win" + local_id, "width=100,height=100,resizable");
};
}

for (id = 0; id <= 10; id++) {
setTimeout( createWindow(id) , 3000 * id);
}

关于Javascript:连续打开窗口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6748144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com