Cruz: Javascript Error in Netscape

Hallo Jungs!

Da sind wir mal wieder auf ein richtiges Rätsel gestoßen. Ich habe einen kleinen Script gebaut, der die eingetippten Zeichen in einem Textarea mitzählt, für SMS Scripts und sowas, wo nur eine begrenzte Anzahl von Zeichen erlaubt sind.

Hier ist der Script:

1 <script language="JavaScript">
2 <!--
3 var string;
4 function countChars() {
5 document.spezialisierungen.display.value = document.forms[0].message.value.length;
6  
7    if (document.forms[0].display.value >= 121)
8 {alert("Max. 120 Zeichen erreicht!");
9  string=document.forms[0].message.value.substr(0,120);
10  document.forms[0].message.value=string;
11  document.forms[0].display.value = document.forms[0].message.value.length;}
12 }
13
14 if (navigator.appName == "Netscape")
15 { document.captureEvents( Event.KEYUP )
16      document.onkeyup = countChars();}
17
18 else window.setInterval("countChars()",200);
19 </script>

und hier ist die Form dazu:

<form name="spezialisierungen">
<textarea name=message onKeydown="countChars()" cols=50 rows=5 wrap=physical size=5></textarea>
<input type=text name="display" size="3" value="0">
</form>

Der Sctipt läuft Einwand frei. Seltsamer Weise spuckt der Netscape jedoch einen Error aus, nämlich

Line: 5 document.spezialisierungen has no properities.

Ich bin wirklich ratlos wie ich diesen Error wegkriege, da der Script funzt und ich weiß weiß nicht wie ich die Elemenete sonst noch ansprechen soll.
Mit forms[0] habe ich es schon probiert.
Die Seite ist in einem geschachteltem Frame drin, falls das irgendwas damit zu tun haben kann.

Ich wäre für Tipps sehr dankbar, der Error muss weg!

Vielen Dank
Cruz

  1. Hallo Cruz,

    das Script in Kommentare einzuschließen, ist erstmal keine schlechte Idee. Bloß dann muss man den Kommentar auch abschließen.
    Setze vor
    </script>
    die Zeile
    //-->

    Gruß
       Michael

    PS: *lächel* ich weiss, ein gemeiner Fehler .....

    1. »»  </script>

      die Zeile

      »»  //-->

      PS: *lächel* ich weiss, ein gemeiner Fehler .....

      Hi Michael,

      Ja den kenn ich shon *lächel zurück*, der ist auch drin, ich habe es nur vegessen mitzuposten, als ich den Script zusammengekürzt habe, damit ihr nicht 50 Zeilen code durchlesen müsst.

      Also, derr Error is still open!

      Cruz

      1. Hallo Cruz,

        trotzallem funktioniert es dann, wie gewünscht. Ich nehme an, der Javascript-Fehler ruht daher, daß beim einlesen des Javascript-Teils der HTML-Teil mit dem Formular noch gar nicht geladen ist.
        Aber
        document.onkeyup = countChars();
        wird trotzdem schon aufgerufen. Du solltest das also auch in eine Funktion packen, die durch
        onload
        im <BODY>-Tag aufgerufen wird. Das sollte nun aber endgültig die Lösung sein. :-)

        Gruß
           Michael

        1. » der HTML-Teil mit dem Formular noch gar nicht geladen ist.
          »»  document.onkeyup = countChars();

          wird trotzdem schon aufgerufen.

          »»  onload

          im <BODY>-Tag aufgerufen wird

          Yo das hat ihn ausgemerzt! :)

          Merci beaucoup mon ami
          Cruz

        2. Hi Loits!

          Aber

          »»  document.onkeyup = countChars();

          wird trotzdem schon aufgerufen. Du solltest das also auch in eine Funktion packen, die durch

          »»  onload

          im <BODY>-Tag aufgerufen wird. Das sollte nun aber endgültig die Lösung sein. :-)

          Gute Analyse, falsche Loesung, wuerde ich sagen. An document.onkeyup darf nicht der Rueckgabewert einer Funktion uebergeben werden (in diesem Falle countChars()), sondern die Referenz auf ein Function-Object (waere dann countChars). Der Unterschied sind die Klammern. Muss also heissen
               document.onkeyup = countChars;   // ohne Klammern!
          Dann muss es auch nicht erst onLoad geschehen, da dadurch die Funktion noch nicht aufgerufen wird.

          Erklaerungen in <../../sfarchiv/1999_3/t05169.htm>. Stimmt zwar nicht alles hundertprozentig, was ich da geschrieben habe, wie ich mittlerweile weiss, aber fuer den Fall hier reicht's.

          Bye, Calocybe

  2. Hallo Jungs!

    Hi Cruz willst du die Maedels nicht begruessen ;-)
    Ich rate mal, dass dein Problem darin besteht, dass du das Formular in einen layer oder ein absolut positioniertes div geschrieben hast. Dann musst du fuer den Netscape schreiben:
    document.layername.document.spezialisierungen..... dann muesste alles klappen.
    viele Gruesse Holger