質問

イムは、基本的には、以下のことを達成しよう。私はそれがtrueに変数を設定します、ページのロード後にその5秒たい。

一度真、それは今のところ...警告「true」を与えることを進んでます。

誰かが5秒前にボタンをクリックしようとすると、

、それは警告偽を与えるでしょう。

ここで私がアップ入力するために管理するものです。正確に機能していません。ありがとう:)

http://pastebin.com/m799d3957する

役に立ちましたか?

解決

あなたは正しい考えを持っているが、あなたは変数のスコープを持つ小さな問題があります。頭痛を減らすために、それはsetTimeout上の文字列をevalを使用してオプションから逃げることは本当に最高です(すべてのウェブ周りのチュートリアルに示されている、私が知っている)と匿名関数を使用します:

var link;
function loading(){
    setTimeout(function(){ 
        link = true; 
    }, 5000);
}
linkが宣言され、スコープがクリスタルクリアです。ここで、

このように、あなたは正確に知っていますよ。

他のヒント

これを試してください:

setTimeout(function() { window.link = true; }, 5000);

これはあなたのif文を満足され、5秒後に真のグローバル変数「リンク」に設定されます。

編集 あなたが初心者なら、これは少し複雑かもしれないが、これを達成するためのより良い方法は、関数スコープではなく、グローバルスコープを使用することです。

あなたのケースでは、このようにタイマー機能を宣言します:

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

    return function() {
        alert(link);
    };
}());

この方法では、無名関数は、タイマーとなり、別の関数を()返しますが、このようタイマーは、その「プライベート」リンク変数へのアクセス権を持っています。詳細については、

をJavaScriptの変数のスコープの Mozillaの記事をチェックアウト
scroll top