nobody_ch: window.setTimout() funktioniert nicht

Hallo

ich habe bei diesem Script zwei Textfelder, das erste Textfeld wird abgefragt, wie viele Zeichen darin enthalten sind, bei dem zeiten Feld steht "aktiv" solange die Zeichen im ersten Textfeld weniger als 6 sind.
Sind im ersten Feld 6 Zeichen sollte im zweiten Feld der Text "inaktiv" erscheinen und das für 20 Sekunde. Doch leider geht das nicht, die Meldung "inaktiv" bleibt nur einen Bruchteil von einer Sekunde, kann mir jemand sagen wieso das so ist?

<html> <head>   <title></title> </head> <body onload="self.focus(); document.WkBzform.test01.focus();"> <?php ?> <script type="text/javascript"> <!-- var aktiv;        function startInterval() {          var aktiv = window.setInterval("FnrKpl()",200);        }        function FnrKpl() {           if ((document.WkBzform.test01.value.length) <= "5") {              document.WkBzform.test02.value="aktiv";           }           else {              window.clearInterval(aktiv);              document.WkBzform.test02.value="inaktiv";              document.WkBzform.test01.value="";              window.setTimeout("startInterval()",20000);           }        } // --> </script> <form name="WkBzform" action="" method="post"> <table border="0" align="center">     <tr>        <td height="600">           <input name="test01" type="text" value="">           <input name="test02" type="text" value="">        </td>     </tr>  </table> <script type="text/javascript"> <!--       startInterval() // --> </script> </form> </body> </html>
  1. [...] kann mir jemand sagen wieso das so ist?

      var aktiv; //^^^^^^^^^   function startInterval() {     var aktiv = window.setInterval("FnrKpl()",200); //  ^^^^^^^^^   }
    1. »» [...] kann mir jemand sagen wieso das so ist?

        var aktiv; //^^^^^^^^^   function startInterval() {     var aktiv = window.setInterval("FnrKpl()",200); //  ^^^^^^^^^   }

      Wenn ich aber das obere deklaration der Variable rausnehme dann bekomme ich eine Fehlermeldung, das aktiv undefiniert ist. :-(.

      ich glaube dann mus ich das anders aufbauen.

      1. Hi,

        Wenn ich aber das obere deklaration der Variable rausnehme dann bekomme ich eine Fehlermeldung, das aktiv undefiniert ist. :-(.

        was schließt Du daraus?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes

        1. Hi,

          »» Wenn ich aber das obere deklaration der Variable rausnehme dann bekomme ich eine Fehlermeldung, das aktiv undefiniert ist. :-(.

          was schließt Du daraus?

          Cheatah

          Ich weiss es im moment nicht, ich mache wohl lieber morgen weiter habe mich da irgendwie verrannt und finde den fehler nicht.

          Danke für die Hilfe

  2. var aktiv;

    Eine Variablendeklaration außerhalb einer Funktion erzeugt eine globale Variable.

           function startInterval() {

             var aktiv = window.setInterval("FnrKpl()",200);

    Eine Variablendeklaration innerhalb einer Funktion erzeugt eine lokale Funktionsvariable.

    Du erzeugst hier eine lokale Variable, die aber nur solange existiert, wie die Funktion »startInterval« läuft. Der Wert der gleichnamigen globalen Variable bleibt unangetastet (bleibt also auf undefined).

    Wenn du eine globale Variable in einer Funktion ansprechen willst, dann darfst du nicht »var« (eine Variablendeklaration) verwenden, sondern kannst eine einfache Zuweisung tätigen:

    aktiv = window.setInterval(...);

    Da wird zwar auch nachgeschaut, ob eine lokale Variable mit diesem Namen existiert. Da aber keine existiert, wird danach im globalen Geltungsbereich geschaut.

    Mathias

    -- JavaScript-Erweiterung für das SELFHTML-Forum
    1. Hallo molily

      danke,
      manchmal habe ch echt ein Brett vor dem Kopf, habe als an der Funktion gezweifelt, habe die Lokale Variable garnicht mehr wahrgenommen.

      Danke