基本的javascript问题:5秒后,将变量设置为true

时间:2009-11-16 07:26:06

标签: javascript settimeout

我基本上试图完成以下任务。我希望它在页面加载后5秒钟,它将变量设置为true。

一旦成立,它将继续发出警告“真实”......暂时。

如果有人在5秒之前尝试点击该按钮,则会将警报设为false。

这是我设法打字的内容。不完全正常。谢谢:))

http://pastebin.com/m799d3957

3 个答案:

答案 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);