Frage

Im Versuch, im Grunde folgenden zu erreichen. Ich möchte es so 5 Sekunden, nachdem die Seite geladen wird, wird es die Variable auf true gesetzt.

Wenn wahr, es wird geht der Warnung "true" geben .. jetzt.

Wenn jemand versucht, den Knopf vor 5 Sekunden zu klicken, wird es die Warnung falsch geben.

Hier ist, was ich es geschafft, bis zu geben. Ist das nicht genau zu arbeiten. Danke:)

http://pastebin.com/m799d3957

War es hilfreich?

Lösung

Sie haben die richtige Idee, aber Sie haben ein kleines Problem mit variablem Umfang. Zur Reduzierung der Kopfschmerzen, es ist wirklich am besten, um weg von mit der String eval Option auf setTimeout (die alle in Tutorials gezeigt wird rund um das Web, ich weiß) und verwendet eine anonyme Funktion:

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

Auf diese Weise werden Sie wissen genau, wo link deklariert und der Umfang ist kristallklar.

Andere Tipps

Versuchen Sie diese:

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

Dies wird die globale Variable "link" auf true nach 5 Sekunden eingestellt, die Ihre if-Anweisung gerecht wird.

Bearbeiten Dies kann ein bisschen kompliziert sein, wenn Sie einen Anfänger sind, aber ein besserer Weg, dies zu tun ist funktions Umfang zu verwenden, anstatt globaler Bereich.

In Ihrem Fall erklären die Timerfunktion wie folgt aus:

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

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

Auf diese Weise gibt die anonyme Funktion eine andere Funktion, die Zeitgeber () wird, aber auf diese Weise Timer hat Zugriff auf seine „private“ Link-Variable. Für weitere Informationen besuchen Sie Mozilla Artikel über JavaScript-Variable Umfang

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top