Hallo,
function button_switch (show, hide, stop_reset)
{
document.getElementById(show).style.display = "";
document.getElementById(hide).style.display = "none";
if(stop_reset == 0) window.setTimeout("button_switch(hide, show, 1)", 1000);
}
Es wundert mich, dass es noch nicht genannt wurde:
Seit JavaScript 1.2 kann der erste Parameter von setTimeout ein Funktionsobjekt sein. In der Funktion button_switch() kann man also eine Funktion notieren, die man dann setTimeout() übergibt.
Der Clou ist, dass beim Notieren einer neuen Funktion alle Variablen des gegenwärtigen Scopes (Variablen-Geltungsbereichs) auch im Scope der neuen Funktion zur Verfügung stehen (hatten wir erst letztens, </archiv/2005/8/t113836/#m723740> ff.).
function button_switch (show, hide, stop_reset) {
document.getElementById(show).style.display = "inline";
document.getElementById(hide).style.display = "none";
function containerfunktion () {
button_switch(hide, show, 1);
}
if (stop_reset == 0)
window.setTimeout(containerfunktion, 1000);
}
}
containerfunktion() hat also Zugriff auf hide, show sowie stop_reset und kann damit button_switch() erneut aufrufen. So kann man sich den Umstand des Einbettens der Variablenwerte in einen String sparen. Bei zwei einfachen String-Parametern ist das zwar nicht sonderlich schwer, aber bei mehreren, komplexeren Objekten wird es unschön bis unmöglich.
(Das Ganze kann man auch anders und kürzer notieren, ja.)
Mathias