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

Ric*_*cky 4 javascript settimeout

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

一旦成为现实,它将继续提供警报"真实"..暂时.

如果有人试图在5秒之前点击按钮,它会将警报设为false.

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

http://pastebin.com/m799d3957

Mat*_*att 9

试试这个:

setTimeout(function() { window.link = true; }, 5000);
Run Code Online (Sandbox Code Playgroud)

这将在5秒后将全局变量"link"设置为true,这将满足您的if语句.

编辑 如果您是初学者,这可能有点复杂,但更好的方法是使用函数范围而不是全局范围.

在您的情况下,声明计时器函数如下:

var timer = (function () {
    var link = false;
    setTimeout(function() { link = true; }, 5000);

    return function() {
        alert(link);
    };
}());
Run Code Online (Sandbox Code Playgroud)

这样,匿名函数返回另一个函数,该函数变为timer(),但这样计时器可以访问其"私有"链接变量.有关更多信息,请查看Mozilla关于JavaScript变量范围的文章


bri*_*vis 9

你有正确的想法,但你有一个可变范围的小问题.为了减少麻烦,最好不要使用字符串eval选项setTimeout(我知道在Web上的教程中显示)并使用匿名函数:

var link;
function loading(){
    setTimeout(function(){ 
        link = true; 
    }, 5000);
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您将确切地知道link声明的位置并且范围非常明确.