Linuchs: Javascript Sortierfunktion

Beitrag lesen

problematische Seite

Moin,

ich habe eine ganz einfache Sortierfunktion geschrieben für <li> Elemente, die ein <a> Element (Seitenzahl) enthalten.

Doch irgendwas stimmt nicht, wenn ich erst nach Titel und dann nach Seite sortiere, sind die Seitenzahlen erst nach dem zweiten Sortierlauf aufsteigend.

Ausschnitt aus einem Liederbuch:

  <button onclick="sortiereListeNachSeite('dieses');">sortiere nach Seite</button>
  <ul id=dieses>
    <li>Uhren-Kanon ♫ <a href="#lied_02">02</a></li>
    <li>Ich geh mit meiner Laterne ♫ <a href="#lied_03" target="_parent">03</a></li>
    <li>Shantymen sind very good ♫ <a href="#lied_04" target="_parent">04</a></li>
  </ul>

In Datei sortiere_liste.js:

function sortiereListeNachSeite ( id ) {
  var zahl1, zahl2, html;
  obj = document.getElementById( id ).getElementsByTagName( "LI" );
  for ( i=0; i<obj.length; i++ ) {
    zahl1 = "x" + obj[i].getElementsByTagName( "A" )[0].innerHTML;  // Seitenzahl als string
    for ( j=i+1; j<obj.length; j++ ) {
      zahl2 = "x" + obj[j].getElementsByTagName( "A" )[0].innerHTML;  // Seitenzahl als string
      if ( zahl2 < zahl1 ) {
        html = obj[i].innerHTML;          // unteren sichern
        obj[i].innerHTML = obj[j].innerHTML;  // oberen nach unten
        obj[j].innerHTML = html;              // gesicherten nach oben
        i++;
      }
    }
  }
}

Wo ist der Fehler?

Gruß, Linuchs