基本的なJavaScriptの質問:5秒後に、trueに変数を設定
-
20-09-2019 - |
質問
イムは、基本的には、以下のことを達成しよう。私はそれがtrueに変数を設定します、ページのロード後にその5秒たい。
一度真、それは今のところ...警告「true」を与えることを進んでます。
誰かが5秒前にボタンをクリックしようとすると、、それは警告偽を与えるでしょう。
ここで私がアップ入力するために管理するものです。正確に機能していません。ありがとう:)
解決
あなたは正しい考えを持っているが、あなたは変数のスコープを持つ小さな問題があります。頭痛を減らすために、それは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の記事をチェックアウト所属していません StackOverflow