JavaScript function pausieren

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

var legt eine neue Variable fest, deren Gültigkeitsbereich den kompletten Funktionsblock umfasst. Wird sie außerhalb einer Funktion definiert, ist die Variable global gültig.

In deinem Beispiel wird var dots allerdings in einer Funktion definiert. Das heißt, dots ist nur innerhalb von losgehts() gültig.

Übrigens musst du nicht jedes mal eine anonyme Funktion erstellen, wenn du setInterval oder setTimeout aufrufst. Du kannst die Funktionen direkt übergeben.

var dots;


function punktung() {
var punkte = document.getElementById("punkte");
if ( punkte.innerHTML.length > 3 ) {
punkte.innerHTML = "";
window.clearInterval(dots);
 setTimeout(losgehts, 5000);
}
 else {
punkte.innerHTML += ".";
}
}


function losgehts() {
 dots = window.setInterval(punktung,500);
}


losgehts();

hummelxy 
Fragesteller
 27.05.2015, 15:03

Hallo rmnstr,

vielen Dank für deine Antwort, jetzt habe ich es verstanden!

Die Auszeichnung als "hilfreichste Antwort" folgt natürlich noch.

Grüße, Hummel

1

clearInterval, nicht clearinterval


userfromberlin  26.05.2015, 16:40

Mal von dem Fehler abgesehen ist die Funktion echt cool. Ich würde Dich unabhängig von Deiner Frage gerne frage, ob Du etwas dagegen hast, wenn ich den Code ohne Quellenangabe auf meiner Webseite verwende?

1
hummelxy 
Fragesteller
 26.05.2015, 17:07
@userfromberlin

Hallo userfromberlin,

leider funktioniert das Script trotzdem nicht mit der Pause... Hier mal in action: https://jsfiddle.net/Lv8ueocf/

-> Es soll nach dem Kürzen auf null des Strings eine 5 Sekunden - Pause gemacht werden, das Script schreibt aber direkt weiter, warum?

Gerne kannst du das Script bei dir nutzen, hier ist es jetzt ohnehin publiziert ;-)

Grüße,

Hummel

1
userfromberlin  26.05.2015, 17:21
@hummelxy

Der nächste Fehler: Du hast die Variable "dots" lokal gestaltet, die muss aber global sein (ohne var vor).

Vielen Dank für die Erlaubnis, den Code zu benutzen! Ich freue mich schon sehr für meine Seite (-;.

1

Ein kleiner Fehler - schreibe anstatt clearinterval doch bitte clearInterval


hummelxy 
Fragesteller
 26.05.2015, 17:05

Hallo yerooke,

selbst mit dieser Verbesserung funktioniert das Script nicht, wie es soll. Die Pause wird nicht gemacht - warum?

Hier mal in action: https://jsfiddle.net/Lv8ueocf/

-> Nachdem alle Punkte auf null gekürzt wurden, soll 5 Sekunden TimeOut sein, es wird stattdessen aber direkt weiter gemacht.

Hast du eine Idee warum?

Grüße,

Hummel

0
yerooke  26.05.2015, 18:54
@hummelxy

Wie mein Vorredner sagte, du versuchst in einer Funktion die Variable der anderen Funktion anzusprechen, das geht nicht da die Variablen in einer Funktion nur für diese gelten.

Umgehen kannst Du das wenn Du die Variable Global definierst - sprich in JavaScript definiert man die Variablen Global ohne das var vorneweg.

Hier dein Beispiel:

https://jsfiddle.net/Lv8ueocf/2/

1
hummelxy 
Fragesteller
 27.05.2015, 15:03
@yerooke

Vielen Dank für deine Hilfe, habe den Fehler verstanden!

0