Demarkieren von SelectOptions

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Demarkieren von SelectOptions

    Ich fühle mich gerade etwas vereimert! Ich habe ein Select dessen Auswahl(en) ich mittels eines Buttons demarkieren möchte.
    Dazu habe ich eine JS-Funktion geschrieben die die ID des Select entgegennimmt und alle Options durchläuft um deren Selected-eigenschaft auf false zu setzen:

    Quellcode

    1. <script type="text/javascript" language="javascript1.2">
    2. function demarkieren(str_select) {
    3. var obj_select = document.getElementById(str_select);
    4. //var vor, nach, msg = 'Debug';
    5. for (var j=0; j < obj_select.options.length; j++) {
    6. //var vor = obj_select.options[j].selected;
    7. obj_select.options[j].selected = false;
    8. //var nach = obj_select.options[j].selected;
    9. //msg += "\ni:" + i + "\tvor:" + vor + "\t\tnach:" + nach;
    10. }
    11. //alert(msg);
    12. }
    13. </script>
    Alles anzeigen


    Das HTML dazu sieht wie folgt aus:

    Quellcode

    1. <select id="select_single" size="3">
    2. <option value="1" selected="selected">Option 1</option>
    3. <option value="2">Option 2</option>
    4. </select>
    5. <button type="button" onclick="javascript:demarkieren('select_single')">demarkieren</button>


    Im FF funktioniert das wunderbar nur der IE streikt! Er akzeptiert die Änderung durch obj_select.options[j].selected = false; nicht was ich nicht verstehe.

    Seltsamerweise funktioniert es wenn für die SelectBox eine Mehrfachauswahl erlaubt wird:

    Quellcode

    1. <select id="select_multiple" size="3" multiple="multiple">
    2. <option value="1" selected="selected">Option 1</option>
    3. <option value="2">Option 2</option>
    4. </select>
    5. <button type="button" onclick="javascript:demarkieren('select_multiple')">demarkieren</button>


    Hat jemand dafür eine Erklärung, besser noch einen Workaround?
  • Der Grund könnte sein, dass das Objekt ohne multiple kein Array ist... aber dass IE und Firefox da anders arbeiten wusste ich nicht.
    Versuchs mal mit einer anderen herangehensweise und wende deine Funktionen direkt auf das <select> Feld an.

    und zwar mit selectedIndex

    Quellcode

    1. <html><head><title>Test</title>
    2. <script type="text/javascript">
    3. function CheckAuswahl () {
    4. if (document.Testform.Auswahl.selectedIndex == 2)
    5. document.Testform.Auswahl.selectedIndex = 0;
    6. }
    7. </script>
    8. </head><body>
    9. <form name="Testform" action="">
    10. <select name="Auswahl" size="5" onchange="CheckAuswahl()">
    11. <option>Goethe</option>
    12. <option>Schiller</option>
    13. <option>Guildo Horn</option>
    14. <option>Homer</option>
    15. <option>Fontane</option>
    16. </select>
    17. </form>
    18. </body></html>
    Alles anzeigen
  • d0nut schrieb:

    Der Grund könnte sein, dass das Objekt ohne multiple kein Array ist... aber dass IE und Firefox da anders arbeiten wusste ich nicht.

    obj_select.options ist ein Array auch wenn das Select *nicht* multiple ist. Ich kann nur die Property selected nicht schreiben. Lesen funktioniert.

    d0nut schrieb:

    Versuchs mal mit einer anderen herangehensweise und wende deine Funktionen direkt auf das <select> Feld an. Und zwar mit selectedIndex

    Werde ich gleich mal probieren. Danke!