• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

IE setzt selcdedIndex nicht

Status
Für weitere Antworten geschlossen.

Puccini

Neues Mitglied
Ich hab eine Funktion welche mir anhand eines Wertes das entsprechnende Feld eines Selectes setzts.
Im FF funktionierts wunderbar, aber im IE nur bedingt...

hier die Funktion:
Code:
        function setSelectOption(SelectID,Wert)
        {
            var Select = document.getElementById(SelectID);
            var gotselected=false;
            if(Select)
            {
                if(Select.options.length>0)
                {
                    for (var i=0; i<Select.options.length; i++) 
                    {
                        if(gotselected==false)
                            Select.selectedIndex = 0;
                        if (Select.options[i].text == Wert) 
                        {
                            Select.selectedIndex = i;
                            break;
                        }
                    }
                }
            }
        }
Im FF funktioniert dies immer, aber im IE nur, wenn das Select schon im HTML-Code der seite mit Options gefüllt war. Da ich aber viele Selects dynamisch im JS erst mit den Options versorge (so hier:)
Code:
        function addSelectOption(SelectID, Value)
        {
            var Select = document.getElementById(SelectID);
            if(Select!=null)
            {
                var Option = document.createElement("OPTION");
                var OValue = document.createTextNode(Value);
                Option.appendChild(OValue);
                Select.appendChild(Option);
            }
        }

Das akzeptier der IE auch, die Selects werden gefüllt, aber nach dem adden der values will ich ja jetzt eins auswählen und da scheitert der IE ..

Weis einer warum?:?:
 
Setz auf die Option selected = true, statt an selectedIndex rum zuwurschteln. selectRef.value gibt dir im übrigen den Wert der gewählten Option zurück.
 
So sah meine Funktion vorher aus:
Code:
        function setSelectOption(SelectID,Wert)
        {
            var Select = document.getElementById(SelectID);
            var gotselected=false;
            if(Select)
            {
                for (var i=0; i<Select.options.length; i++) 
                {
                    if(gotselected==false)
                        Select.options[0].selected=true;
                    if (Select.options[i].text == Wert) 
                    {
                        Select.options[i].selected = true;
                        gotselected=true;
                    }
                    else
                            Select.options[i].selected = false;    
                }
            }
        }
Da bringt der IE den fehler "Die selected Eigenschaft konnte nicht festgelegt werden"

Ka warum -.-
Bei selectedIndex kommt wenigstens kein fehler.

Das mit dem value weis ich acuh!
Aber der is nicht immer gesetzt, daher geh ich lieber vom text des selectes aus!
 
Ok, hab das Problem gelöst.
Es lag 1. an dem setzten des Selectes. Man muss es über selectedIndex machen (warum auch immer).
Und 2. lag es an der Art wie ich die "Options" erzeugt haben.
Das muss so aussehen:

Code:
        function addSelectOption(SelectID, Value)
        {
            var Select = document.getElementById(SelectID);
            if(Select!=null)
            {
                var NeuerEintrag = new Option(Value, Value);
                Select.options[Select.length] = NeuerEintrag;
            }
        }
wobei das doppelte Value,Value nur bei mir sein muss, sonst kann man auch Text,Value nehmen, falls der Text in der Auswahl != dem damit verbundenen Value ist.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben