我基本上是在尝试完成以下工作。我希望在页面加载后 5 秒,它将变量设置为 true。
一旦为真,它将继续给出警报“真”..现在。如果有人试图在 5 秒之前点击按钮,它会给出错误的警报。
我基本上是在尝试完成以下工作。我希望在页面加载后 5 秒,它将变量设置为 true。
一旦为真,它将继续给出警报“真”..现在。如果有人试图在 5 秒之前点击按钮,它会给出错误的警报。
您的想法是正确的,但是您对变量范围有一个小问题。为了减少头痛,最好不要使用字符串 eval 选项setTimeout
(我知道,这在网络上的教程中都有显示)并使用匿名函数:
var link;
function loading(){
setTimeout(function(){
link = true;
}, 5000);
}
这样,您将确切知道link
声明的位置并且范围非常清晰。
尝试这个:
setTimeout(function() { window.link = true; }, 5000);
这将在 5 秒后将全局变量“link”设置为 true,这将满足您的 if 语句。
编辑 如果您是初学者,这可能有点复杂,但更好的方法是使用函数范围而不是全局范围。
在您的情况下,像这样声明计时器函数:
var timer = (function () {
var link = false;
setTimeout(function() { link = true; }, 5000);
return function() {
alert(link);
};
}());
这样,匿名函数返回另一个成为 timer() 的函数,但是这样 timer 可以访问它的“私有”链接变量。有关更多信息,请查看Mozilla 关于 JavaScript 变量范围的文章
简单的单行超时:
setTimeout(() => alert("Time is up!"), 1000);
您显然可以在以下范围内执行任何代码:
let seconds = 5;
let timer = setInterval(() => console.log(`${seconds--} seconds left`), 1000);
setTimeout(() => {
clearInterval(timer);
console.log('')
}, 5999);