Javascript Error in Netscape
Cruz
- javascript
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
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 .....
»» </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
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
» 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
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
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