2 3 9 43 0 0 0

setTimeout() und setInterval()

Die Funktionen setTimeout() sowie setInterval() haben sich fast unbemerkt von mir gewandelt. Die Syntax für beide zeitverzögerten Aufrufe ist so verschieden geworden, dass sie auch nicht vermischt werden darf. Ehemals mit Wertübergabe: Funktioniert aber immer noch, wie man sehen kann.


// 1. Beispiel für Zahlen hochzählen
function ALT(wert){
 wert = wert + 1 ;
 window.setTimeout("ALT("+wert+")", 1000) ;
 document.getElementById("zaehler").innerHTML = "wert: " + wert ;
}
// 2. Beispiel mit zwei Wertübergaben
function MACHWAS(wert1, wert2){
 wert1 = machwas ;
 wert2 = machwasanders ;
 window.setTimeout("MACHWAS("+wert1+", "+wert2+")", 1000) ;
 document.getElementById("id").innerHTML = "ausgabe: "+wert1+" "+wert2 ;
}

Die Zeichenverknüpfung wurde zu einer echten Herausforderung und wie in Beispiel 2 beschriebenen, sehr frickelig, weil auch das Trennzeichnen für mehrere Werte (das Komma) nicht vergesssen sein durfte. Da war schneller ein Fehler enthalten, wenn man keine Sammlung für sowas angelegt hatte.
Und das ist neu:


function NEU(val1, val2){
 document.getElementById('versal').innerHTML = String.fromCharCode(val1) ;
 document.getElementById('minusk').innerHTML = String.fromCharCode(val2) ;
 if ( val1 < 90 ) { val1++ ; val2++ ; }
 else { val1 = 65 ; val2 = 97 ;}
 setTimeout(NEU, 1000, val1, val2) ;
}

Und wehe man schreibt hier noch: setTimeout(NEU(), 1000, val1, val2) ;,dann passiert nämlich garnichts. Aber wie übersichtlich alles geworden ist.
Der Funktionsaufruf ohne öffnende und schließende Klammer (hab ich schon mal gesehen im Zusammenhang mit der Fensterüberwachung, das kann man nur so übernehmen ohne zu erfahren, warum denn das jetzt?),
die Zeitverzögerung und (so einfach) die Übergabewerte schön in Reih und Glied. Na geht doch!

Als letztes: setIntervall() als anonymen Funktionsaufruf. Das Beispiel zeigt lediglich die Zeit an. Das geht aber auch mit Wertübergaben. Hab ich ausprobiert!
Die Methode: requestAnimationFrame als Alternative zu Timeout und Intervall werde ich nach ausgiebigen Tests auf der nächsten Seite vorstellen.


setInterval (
function ZEIT() {
 var today = new Date();
 var h = (today.getHours() < 10 ) ? "0"+today.getHours() : today.getHours() 
 var m = (today.getMinutes() < 10 ) ? "0"+today.getMinutes() :today.getMinutes() 
 var s = (today.getSeconds() < 10 ) ? "0"+today.getSeconds() : today.getSeconds() 
 document.getElementById("uhrzeit").innerHTML = h+ ":" + m + ":" + s;
 }
, 1000 )

setTimeout() innerhalb einer anonymen Funktion schweigt still, das heißt: der gibt nich mal nen Fehlermucks ab.


// die anonyme Funktion läßt sich nicht wieder aufrufen.
(function() {
function TIME() {
// mach was
 setTimeout( function(){ TIME() }, 1000); } ;
})();

Alle Funktionsaufrufe werden nach diesem Hinweis im <script>...</script> notiert. Klar, damit #id('wasauchimmer') hier irgendwo weiter vorn als Element schon da ist.



Dokument geändert am: 05. Aug. 2016 19:35