JavaScript Code geht nur im IE. (Inhalt zwischen zwei Listen

  • Bei meinem Code existieren zwei Listen, in der Eitnräge vorhanden sind. Durch Klick auf Rein, soll der markierte Eintrag in der linken Box in die Andere Liste übernommen werden. Mit Raus soll der markierte Eintrag von rechts nach links wandern.

    Ebay hat auch solch eine Funktion. Und beim IE funktioniert auch mein Code. Nur bei Fire Fox will das ganze nicht funktionieren und bei Click auf die Buttons passiert nichts...

    function _rein(){
    // Listenzugriff
    var _l = document.getElementsByName("in")[0];
    var _r = document.getElementsByName("out")[0];

    // Falls nichts ausgewählt abbrechen
    if (_l.selectedIndex == -1) return;

    // neues Option-Element
    var Eintrag = document.createElement("option");

    // Mit Werten belegen
    Eintrag.text = _l.options[_l.selectedIndex].text;
    Eintrag.value = _l.options[_l.selectedIndex].value;

    // Hinzufügen
    _r.add(Eintrag, _l.length);

    // Löschen
    _l.remove(_l.selectedIndex);
    }

    function _raus(){
    // Listenzugriff
    var _l = document.getElementsByName("in")[0];
    var _r = document.getElementsByName("out")[0];

    // Falls nichts ausgewählt abbrechen
    if (_r.selectedIndex == -1) return;

    // neues Option-Element
    var Eintrag = document.createElement("option");

    // Mit Werten belegen
    Eintrag.text = _r.options[_r.selectedIndex].text;
    Eintrag.value = _r.options[_r.selectedIndex].value;

    // Hinzufügen
    _l.add(Eintrag, _l.length);

    // Löschen
    _r.remove(_r.selectedIndex);
    }

    function _prepare(){
    // Listenzugriff
    var _r = document.getElementsByName("out")[0];

    // Zugriff auf Input-Feld
    var _i = document.getElementsByName("neu")[0];

    var neu = "";
    for (var i = 0; i < _r.length; i++){
    neu += _r.options[i].value;
    if (i < _r.length - 1) neu += ",";
    }
    _i.value = neu;
    }
    </SCRIPT>

  • Stell uns doch mal ein "kurzes" Html Dokument zur Verfügung zum testen.


    Und du hast nicht den Fall bedacht

    Code
    // Zugriff auf Input-Feld
    var _i = document.getElementsByName("neu")[0];
    Code
    _i.value = neu;


    Hier spukt meine Javascript Konsole eine Fehlermeldung aus, du solltest auch den Fall beachten das keine Elemente zurückgeliefert werden.