michael: Select Options sortieren

Hallo,

ich will eine bestehende Option-Liste via JS um eine Option erweitern. Die Liste soll aber alphabethisch sortiert bleiben. Hierfür lese ich mir die Liste in ein Array, lösche die Liste, sortiere das Array und schreibe es zurück in die Liste. Das funktioniert auch ganz gut.

Das Problem ist aber das sortieren! Das scheint partou nicht zu klappen ;(

Weiss jemand warum?
Hier mein Code:

addOption(document.GetElementById("meinSelect"), "opt", "1");

function addOption(target, option, value) {
    var opts = new Array();

while(target.length){
        var oldopt = new Array();
        oldopt["value"] = target.options[0].value;
        oldopt["text"] = target.options[0].text;
        opts.push(oldopt);
        target.remove(0);
    }

var newopt = new Array();
    newopt["value"] = value;
    newopt["text"] = text;
    opts.push(newopt);

opts.sort(sortByOptionText);

for(var i=0; i<opts.length; i++){
        target.options.add(new Option(opts[i]["text"], opts[i]["value"], false, false));
    }
}

function sortByOptionText(a, b) {
    var x = a["text"];
    var y = b["text"];
    return (x < y);
}

  1. Hello,

    Weiss jemand warum?

    ich rate mal: sort() kann nicht mit Array-of-Array umgehen sondern erwartet direkt Werte. In Java müsstest du dafür den Objektvergleich selbst implementieren, über JavaScript denke ich mal lieber gar nicht nach.
    Aber vielleicht weiß ja noch jemand was gegenteiliges...

    MfG
    Rouven

    --
    -------------------
    There's no such thing as a free lunch  --  Milton Friedman
    1. Ah! Ich habs! Es lag am return:

      return ((x < y) ? -1 : ((x > y) ? 1 : 0));

      Vielen Dank soweit
      Michael

    2. Hallo Rouven,

      ich rate mal: sort() kann nicht mit Array-of-Array umgehen ...

      falsch geraten.

      Gruß, Jürgen

      1. Hello,

        falsch geraten.

        cool, wonach sortiert er denn, erster Eintrag im inneren Array?

        MfG
        Rouven

        --
        -------------------
        Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
        1. Hallo Rouven,

          cool, wonach sortiert er denn, erster Eintrag im inneren Array?

          nein. Sortiert wird so wie in der Vergleichsfunktion angegeben. Michael hat es schon richtig gezeigt.

          Gruß, Jürgen

          1. Hello,

            nein. Sortiert wird so wie in der Vergleichsfunktion angegeben. Michael hat es schon richtig gezeigt.

            ach verdammt, die Funktion da unten hab ich gar nicht mehr zur Kenntnis genommen...

            MfG
            Rouven

            --
            -------------------
            "I wish it need not have happened in my time" - "So do I, and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us."  --  J.R.R. Tolkien: "The Lord Of The Rings: The Fellowship Of The Ring"