我基本上试图完成以下任务。我希望它在页面加载后5秒钟,它将变量设置为true。
一旦成立,它将继续发出警告“真实”......暂时。
如果有人在5秒之前尝试点击该按钮,则会将警报设为false。
这是我设法打字的内容。不完全正常。谢谢:))
答案 0 :(得分:9)
试试这个:
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()的函数,但这样定时器可以访问其“私有”链接变量。有关详细信息,请查看Mozilla's article on JavaScript variable scope
答案 1 :(得分:9)
你有正确的想法,但你有一个可变范围的小问题。为了减少麻烦,最好不要使用setTimeout
上的字符串eval选项(我知道在网络上的教程中显示)并使用匿名函数:
var link;
function loading(){
setTimeout(function(){
link = true;
}, 5000);
}
通过这种方式,您可以确切地知道link
的确切位置,并且范围非常明确。
答案 2 :(得分:0)
简单的一线超时:
setTimeout(() => alert("Time is up!"), 1000);
您显然可以执行以下任何代码:
let seconds = 5;
let timer = setInterval(() => console.log(`${seconds--} seconds left`), 1000);
setTimeout(() => {
clearInterval(timer);
console.log('?')
}, 5999);