Michael Schröpl: Die monatliche Betriebsblindheit ...

Hallo Leute,

ab und zu stehe ich bei JavaScript wie der Ochse
vor der Mauer.

Ich möchte gerne prüfen, ob der ausgewählte Eintrag
einer <select>-Auswahlliste einen bestimmten Wert hat
(und in diesem Falle noch ein paar weitere Dinge tun).

Das Formular hat den Namen "formular", das Feld den
Namen "bedeutung", den Vergleichswert bekommt meine
JavaScript-Funktion als Parameter.

function transfer (value_name, value_id)
{
  /* Suchbegriff "importieren" (funktioniert) */
  var s = parent.frames['head_function'].document.forms['formular'].suchbegriff;
  document.forms['formular'].suchbegriff.value = s.value;

/* Leeren Suchbegriff abfangen */
  if (s.value == '')
    {
      alert ('VDB-Suche:\nBitte geben Sie einen Suchbegriff ein!');
      s.focus();
      return false;
    }

/* Ist der Suchbegriff rein numerisch? */
  var is_num = (s.value.match(/^\d+$/) ? 1 : 0);
  alert ('numerisch: "' + is_num + '"');v

var b = document.forms.formular.bedeutung;
  alert ('Bedeutung: "'  + b + '"');

/* Formularfeld "Bedeutung" auswerten */
  alert ('Bedeutung: "' + b.value + '"');

/* Soll der Suchbegriff eine nichtnumerische
     Bedeutung haben? */
  alert ('Vergleiche "' + b.value + '" mit "' + value_name + '"');
  if ((b.value == value_name) && (is_num))
     {
       alert ('VDB-Suche nach Namen:\nBitte geben Sie einen Suchbegriff ein,\nder NICHT nur aus Ziffern besteht!');
       s.focus();
       return false;
     }

/* Soll der Suchbegriff eine rein numerische
     Bedeutung haben? */
  alert ('Vergleiche "' + b + '" mit "' + value_id + '"');
  if ((b == value_id) && (!is_num))
     {
       alert ('VDB-Suche nach IDs:\nBitte geben Sie einen Suchbegriff ein,\nder nur aus Ziffern besteht!');
       s.focus();
       return false;
     }
  return true;
}

Im Prinzip klappt das auch tadellos - jedenfalls in
Mozilla, Opera 6 und M$IE 5.0 (viel mehr habe ich
noch nicht getestet).

Nur leider muß es auch mit Netscape 4.7 (und 4.5)
klappen. Und zu meiner Überraschung scheint dieser
den Ausdruck
    document.forms.formular.bedeutung.value
nicht zu verkraften (in meinem Fall also "b.value").

Die modernen Browser zeigen bei "alert(b)" jeweils
an, daß  b  ein "object" sei. Netscape 4 zeigt in
diesem Fall den HTML-Quelltext des kompletten
<select>-Elements an.

Deshalb meine Frage:
Wie komme ich mit Netscape 4.5 an den Wert des
ausgewählten Eintrags eines <select>-Feldes heran?

In der Hoffnung auf eine "Hand-an-Stirn"-Antwort ...
   Michael

P.S.: Falls alle Stricke reißen, würde ich über
      document.forms['formular'].bedeutung.selectedIndex
      gehen - was natürlich viel häßlicher wäre, als
      den Wert direkt abzufragen, weil ich mich dann
      von der Anordnung der Einträge innerhalb von
      <select> abhängig machen würde ... und dieses
      Formular wird noch von anderen Entwicklern
      gepflegt ...

  1. Hallo Michael,
    um es kurz zu machen, nimm alert(b[b.selectedIndex].value); anstelle von alert(b.value);
    MfG. Lutz T.

    1. Hallo Lutz,

      um es kurz zu machen,
      nimm alert(b[b.selectedIndex].value); anstelle von alert(b.value);

      Du ahnst nicht, wie sehr mir diese schnelle Antwort geholfen hat
      (montag früh ist release freeze, und ich will das Feature unbedingt
      noch mit drin haben).

      Dankbare Grüße
               Michael

      1. Hallo Michael,

        da wollt ich dir antworten, aber da war schon eine da... so ein
        Mist :)

        (montag früh ist release freeze, und ich will das Feature
        unbedingt noch mit drin haben).

        Was fuer ein Glueck, dass wir das Release verschoben haben.

        Gruesse,
         CK