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