Chriss: Combobox in Firefox auswerten ?

Hi, also ich habe da ein Problem mit dem Auswerten der HTML-Comboboxen.
Ich benötige eine Auswertung des aktuell ausgewählten Eintrages einer Combobox.
Dazu rufe ich im onChange()-Ereignis eine entsprechende JavaScript-Funktion auf.
In dieser Funktion wird das Select-Element der gewählten Combobox ausgewählt und alle untergeordneten option-tags durchgeschleift bis ich eines finde bei dem das selected-attribut gesetzt ist.
Dazu führe ich folgenden Vergleich durch:

if (selChildNode.getAttribute("selected") == Vergleichsparam)

Vergleichsparam ist beim MSIE >TRUE< und bei Firefox ><.
Diese Werte habe ich ermittelt in dem ich mir vorher die Werte des selected-Attributs habe zurückgeben lassen.
Das Problem dabei ist ja dass das selected-Attribut ein leeres Attribut ist.
Das Problem was nun auftritt ist folgendes:
Im MSIE funktioniert das ganze problemlos und ich erhalten den ausgewählten Eintrag zurück.
Bei Firefox bekomme ich jedoch immer genau den Eintrag der beim Laden ser Seite gesetzt wurde und nicht denjenigen den ich zuletzt ausgewählt hatte.

Hier noch ein bisschen Code dazu.
Zunächst die Combobox, bitte nicht hauen, es ist noch mit ASP gemischt.

// Type Combobox
         Response.Write("<tr><td><center><select id='Type_Combobox_" + icount + "' name='valtype" + icount + "' size='1' onChange='TypeSelected(" + icount + ")'>");
         //onChange='TypeSelected(" + icount + ")'

Response.Write("<option value='E'");
         if (strType[icount] == "E") { Response.Write(" selected"); }
         Response.Write(">Eingang</option>");

Response.Write("<option value='A'");
         if (strType[icount] == "A") { Response.Write(" selected"); }
         Response.Write(">Ausgang</option>");

Response.Write("<option value='M'");
         if (strType[icount] == "M") { Response.Write(" selected"); }
         Response.Write(">Merker</option>");

Response.Write("<option value='S'");
         if (strType[icount] == "S") { Response.Write(" selected"); }
         Response.Write(">S-Merker</option>");

Response.Write("<option value='Z'");
         if (strType[icount] == "Z") { Response.Write(" selected"); }
         Response.Write(">Z&auml;hler</option>");

Response.Write("<option value='T'");
         if (strType[icount] == "T") { Response.Write(" selected"); }
         Response.Write(">Zeit</option>");

Response.Write("<option value='D'");
         if (strType[icount] == "D") { Response.Write(" selected"); }
         Response.Write(">Datenwort</option>");

Response.Write("<option value='L'");
         if (strType[icount] == "L") { Response.Write(" selected"); }
         Response.Write(">Datenbyte links</option>");

Response.Write("<option value='R'");
         if (strType[icount] == "R") { Response.Write(" selected"); }
         Response.Write(">Datenbyte rechts</option>");

Response.Write("</select></center></td>");

Und noch die TypeSelected-Funktion:

function TypeSelected(iRowNumber)
{
 var tmpID = "Type_Combobox_" + iRowNumber;
 var SelectedType;
 var bCancelFunction = false;

// Browser überprüfen und entsprechende globale Variable setzen
 CheckBrowser();

var Vergleichsparam = "";

// Parameter für Vergleich setzen, um zu schauen welcher Wert ausgewählt wurde
 switch (varBrowser)
 {
  case "MSIE":
   Vergleichsparam = true;
   break;
  case "Firefox":
   Vergleichsparam = "";
   break;
  default:
   bCancelFunction = true;
   break;
 }

if (bCancelFunction == false)
 {
  var selChildNode = document.getElementById(tmpID).firstChild;
  while (selChildNode != null)
  {
   //alert(selChildNode.getAttribute("value") + " (selected= " + selChildNode.getAttribute("selected") + ")");
     if (selChildNode.getAttribute("selected") == Vergleichsparam)
     {
      SelectedType = selChildNode.getAttribute("value");
      break;
     }
     selChildNode = selChildNode.nextSibling;
  }
 }

SelectedType gibt beim Firefox immer 'D' zurück was beim Laden als Initialwert gesetzt wird.
Für Hinweise und Ratschläge wäre ich sehr dankbar.
Gruß
Chriss

  1. Tach,

    Dazu führe ich folgenden Vergleich durch:

    if (selChildNode.getAttribute("selected") == Vergleichsparam)

    das kann nicht funktionieren, da durch das Auswählen ja kein Attribut gesetzt wird, sondern die selected-Eigenschaft geändert wird, nach dieser solltest du auch fragen. Dann kannst du dir auch die unsinnige und üblicherweise nur Fehler erzeugende Browserweiche sparen.

    Zunächst die Combobox, bitte nicht hauen, es ist noch mit ASP gemischt.

    Serverseitiger Code ist bei Clientseitigen Problemen unsinnig, das hast du selber erkannt, also vermeide es beim nächsten Mal.

    SelectedType gibt beim Firefox immer 'D' zurück was beim Laden als Initialwert gesetzt wird.

    Das ist ja auch das einzige Option-Element, das das gesuchte Attribut hat.

    mfg
    Woodfighter

    1. das kann nicht funktionieren, da durch das Auswählen ja kein Attribut gesetzt wird, sondern die selected-Eigenschaft geändert wird, nach dieser solltest du auch fragen. Dann kannst du dir auch die unsinnige und üblicherweise nur Fehler erzeugende Browserweiche sparen.

      Uhh, jaa, du hast Recht. Da hab ich wohl völlig in die falsche Richtung gedacht.

      SelectedType gibt beim Firefox immer 'D' zurück was beim Laden als Initialwert gesetzt wird.

      Das ist ja auch das einzige Option-Element, das das gesuchte Attribut hat.

      Gehe ich dann recht in der Annahme dass der MSIE das ganze überaus freundlich bewertet, denn in diesem funktioniert die Abfrage auf das selected-Attribut ?

      Nochmal Danke für die Hilfe.

      Gruß
      Chriss

      1. Tach,

        Gehe ich dann recht in der Annahme dass der MSIE das ganze überaus freundlich bewertet, denn in diesem funktioniert die Abfrage auf das selected-Attribut ?

        Freundlich für den Nutzer? Vielleicht.

        Freundlich für den Seitenersteller? Sicher nicht, wenn ich einen Fehler mache, möchte ich darauf hingewiesen werden.

        mfg
        Woodfighter

  2. Hallo,

    Hi, also ich habe da ein Problem mit dem Auswerten der HTML-Comboboxen.

    Es gibt in HTML keine Comboboxen. Du meinst Select-Boxen.

    Ich benötige eine Auswertung des aktuell ausgewählten Eintrages einer Combobox.
    Dazu rufe ich

    http://de.selfhtml.org/javascript/objekte/options.htm#selected_index

    Beispiel:

      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
            "http://www.w3.org/TR/html4/strict.dtd">  
    <html>  
    <head>  
    <title>SELECT</title>  
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  
    <script type="text/javascript">  
    <!--  
    function getSelected(sel, selIndex) {  
      alert(sel.options[selIndex].value);  
    }  
    //-->  
    </script>  
    </head>  
    <body>  
    <form action="#" method="get">  
    <select name="myselect" size="1" onchange="getSelected(this, this.selectedIndex);">  
    <option value="a">a</option>  
    <option value="b">b</option>  
    <option value="c">c</option>  
    <option value="d">d</option>  
    </select>  
    </form>  
    </body>  
    </html>  
    
    

    viele Grüße

    Axel