kaepten: Formilarfeld - Wert kann nicht ausgelesen werden

Hallo zusammen

Ich habe ein JavaScript Problem jedoch nur mit Netscape (im IE funktionierts) mit folgender Seite:

http://www.vsp-asfc.ch/kalender/ak_02_erfassen.html

Beim Speichern der Angaben werden alle Felder validiert. Als erstes, ob das Ende nach und nicht vor dem Beginn liegt. Diese Überprüfung nehme ich in der fuktion namens: "valall" -- Abschnitt mit Kommentar: "Datumvergleich". Dort habe ich ein riesending eines if else Konstruktes. Leider springt mir der Netscape gleich beim ersten Vergleich:

if (!((document.termin.jahrb.value) < (document.termin.jahre.value)))

heraus. Mit einer Alert-Box konnte ich sehen, dass document.termin.jahrb.value = null war...

Warum? Und warum hat IE kein Problem damit?

Hoffe auf einige Ideen!!!!

cheers kaepten

  1. Hallo Kaepten

    heraus. Mit einer Alert-Box konnte ich sehen, dass document.termin.jahrb.value = null war...
    Warum? Und warum hat IE kein Problem damit?

    document.termin.jahrb ist ein options-Array, da kann man nicht einfach document.termin.jahrb.value drauf anwenden. Du musst korrekterweise mit so einem Konstrukt arbeiten wie:
    document.termin.jahrb.options[document.termin.jahrb.options.selectedIndex].value
    Der IE "erahnt" es zwar auch mit einfachem value, aber im Sinne der Objekthierarchie ist das eben nicht ganz korrekt oder, naja, sagen wir, "vorauseilender Gehorsam" ;-)

    viele Gruesse
      Stefan Muenz

    1. Hi Stefan
      Vielen Dank für die Antwort.

      document.termin.jahrb ist ein options-Array, da kann man nicht einfach document.termin.jahrb.value drauf anwenden. Du musst korrekterweise mit so einem Konstrukt arbeiten wie:
      document.termin.jahrb.options[document.termin.jahrb.options.selectedIndex].value

      Das hab ich jetzt mit Hilfe von SelfHTML und eines kleinen separaten Test gerade auch herausgefunden. *uff* Sorry also wegen meiner voreiligen Frage.

      Letztlich hatte ich den Fehler, dass ich ein _vermutlich_ reserviertes Wort, nämlich recalc als Funktionsname verwendet hatte. Gemeinerweise lief die Prozedur immer genau einmal, aber eben nur einmal. Ein wiederholtes aufrufen funktionierte dann nicht mehr. Nach einem Umbenennen hatte ich keine Probleme mehr.

      Gibts eigentlich eine Art Entwicklungsumgebung für JavaScript, damit solche Fehler nicht, oder zumindest weniger passieren können?

      kaepten