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ä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