sprain: Problem mit setTimeout() ...

Hallo zusammen ...

Ich habe ein Problem mit setTimeout(). Ich möchte, dass die Funktion losch() erst nach einer halben Sekunde aufgerufen wird. Nur funktioniert das nicht, der Browser meldet immer, nr sei nicht definiert. Was mache ich falsch ??

Wenn ich losch(nr) direkt aufrufe, ohne über hide(nr) einen Umweg zu machen, funktionierts einwandfrei.

Übrigens nr ist einfach eine Zahl, zB. 1 ...

function hide(nr)
{
window.setTimeout("losch(nr)",500);
}
losch(nr)
{
var m=("menu"+nr);
document.all(m).style.visibility="hidden";
}

Danke
sprain

  1. Hi Thomas!

    window.setTimeout("losch(nr)",500);

    Der fehlter ist im "loschen(nr)" ... du übergibst ihm das ganze als string und er kommt daher nicht auf die idee das nr durch den übergebenen wert zu ersetzen

    schreibe mal:

    window.setTimeout(eval("losch("+nr+")"),500);

    das müßte gehen - habe ich aber jetzt nicht getestet

    CU der vom weihnachtseinkauf fix&fertige
    Roman

    1. hi roman,

      window.setTimeout(eval("losch("+nr+")"),500);

      ^^^^^^^^^^^^^^^^

      vielleicht lieber ' " " ' so?
      Ja die Weihnachtseinkaeufe, City am Samstag ist echt was fuer Masochisten ;-)

      Beileid & Gruesse Joachim

    2. Hi Roman,
      das kann man auch ohne eval schreiben.
      window.setTimeout('losch('+nr+')',500);

      Grüße
      Thomas

  2. hi,

    function hide(nr)
    {
    window.setTimeout("losch(nr)",500);
    }
    losch(nr)

    ^^^^^^^^^^^^^^^^^

    da fehlt "function", nur ein copy-Fehler?

    {
    var m=("menu"+nr);
    document.all(m).style.visibility="hidden";
    }

    bei mir geht es ueber einen kleinen Umweg, ich definiere x=nr:

    function hide(nr)
    {
    x=nr;
    window.setTimeout("losch(x)",500);
    }
    function losch(nr)
    {
    document.all["ebene"+nr].style.visibility="hidden";
    }

    Der DIV hat bei mir die ID="ebene0", uebergeben wird 0.
    Das Script ist reine IE-Syntax, aber ich nehme an, Du testest erst einmal IE-only?

    Gruss  Joachim