Problem mit split() bei der Gecko-Engin (Netscape 6.1 / 0.9.2)
Flo
- javascript
0 Axel Richter0 Daniel Thoma0 Flo
Hallo Forum,
ich hab ein kleines Problem und hoffe das mir hier wer helfen kann.
Und zwar klemmt es bei der Split()-Funktion aber nur bei der Gecko-Engin. Bei folgendem Sript
<html>
<body>
<pre>
<script language="JavaScript">
var satz = "EIN_KLEINER_TEST";
var satz = satz.split("_");
document.writeln("satz[0] = " + satz[0]);
document.writeln("satz = " + satz);
</script>
</pre>
</body>
</html>
gibt er folgendes aus:
Das passt ja aber nicht da satz[0] ja "EIN" sein müsste. Unten, wenn man sich den ganzen Array ausgeben lässt, zeigt er es ja sogar richtig an.
Ich vermute das er es nicht ganz schnallt das "satz" ein Array ist und einfach als String behandelt.
Meine Frage:
Ist das ein Bug?
Und wenn es ein Bug ist wie kann ich ihn umgehen?
Getestet hab ich übrigens auf:
Mozilla 0.9.2 (Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010628)
und
Netscape 6.1 (Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010726 Netscape6/6.1)
Sind zwar nicht ganz die aktuellen. Aber das ist ja auch egal weil die Scripte sollten ja auch auf älteren Browsern laufähig sein.
Beste Grüße - Flo
Hallo Flo,
Und zwar klemmt es bei der Split()-Funktion aber nur bei der Gecko-Engin. Bei folgendem Sript
Also bei mir (Netscape 6.2.1
Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; QXW03329) Gecko/20011128 Netscape6/6.2.1) läuft's so, wie Du willst. Ganz sauber ist es aber nicht programmiert.
Versuch einer Erklärung (ohne Gewähr):
<html>
<body>
<pre>
<script language="JavaScript">var satz = "EIN_KLEINER_TEST";
var satz steht im Arbeitsspeicher als String
var satz = satz.split("_");
eine _neue_ _zusätzliche_ var satz steht im Arbeitspeicher als Array
document.writeln("satz[0] = " + satz[0]);
hier wird der String satz angesprochen. Warum? Keine Ahnung.
document.writeln("satz = " + satz);
hier wird das Array satz angesprochen. Warum? Keine Ahnung.
</script>
</pre>
</body>
</html>gibt er folgendes aus:
============================================
satz[0] = E
satz = EIN,KLEINER,TESTDas passt ja aber nicht da satz[0] ja "EIN" sein müsste. Unten, wenn man sich den ganzen Array ausgeben lässt, zeigt er es ja sogar richtig an.
Ich vermute das er es nicht ganz schnallt das "satz" ein Array ist und einfach als String behandelt.
Ja, das ist wohl so.
Probiers mal so:
<script language="JavaScript" type="text/javascript">
var satz = "EIN_KLEINER_TEST";
var woerter = new Array();
woerter = satz.split("_");
document.writeln("woerter[0] = " + woerter[0]);
document.writeln("woerter = " + woerter);
//Test mit String satz:
document.writeln("satz[0] = " + satz[0]);
</script>
Gruß
Axel
Hallo Flo,
var satz = "EIN_KLEINER_TEST";
var satz = satz.split("_");
document.writeln("satz[0] = " + satz[0]);
document.writeln("satz = " + satz);
Im Mozilla 1.1 tut das. Allerdings ist das, was du hier machst trozdem nicht richtiger. Du deklarierst eine Variable doppelt.
So tut es wahrscheinlich auch mit den älteren Versionen:
var satz = "EIN_KLEINER_TEST";
satz = satz.split("_");
document.writeln("satz[0] = " + satz[0]);
document.writeln("satz = " + satz);
Grüße
Daniel
Danke für die Hilfe ich hab es jetzt.
Woran es genau lag kann ich nicht 100 Pro sagen. Lag aber vermutlich eher an mir.
Zumindest lag es nicht an der Split. Weil das Problem tauchte auch auf wenn ich einen Array hatte den ich ohne split erstellt hatte.
Flo