Sortieren Sie Optionen in einer Auswahlliste alphabetisch und behalten Sie Ereignis-Listener beiJavaScript

Javascript-Forum
Guest
 Sortieren Sie Optionen in einer Auswahlliste alphabetisch und behalten Sie Ereignis-Listener bei

Post by Guest »

Ich muss die Optionen in einer Auswahlliste alphabetisch sortieren. Ich kann nicht einfach die innerHTML- und value-Attribute wechseln, da an einige Optionen Klassen und Ereignis-Listener angehängt sind. Folgendes habe ich bisher:

Code: Select all

function alphabetizeSelectListItems(theOldList) {
var theNewList;
var insertOptionHere;
theNewList = theOldList.cloneNode(true);
while(theOldList.options.length > 0) {
theOldList.options[0].remove();
}
while(theNewList.options.length > 0) {
insertOptionHere = null;
for(var optionCounter = 0; optionCounter < theOldList.length; optionCounter++) {
if(theNewList.options[0].innerHTML.toLocaleUpperCase().localeCompare(theOldList.options[optionCounter].innerHTML.toLocaleUpperCase()) < 0) {
insertOptionHere = optionCounter;
break;
}
}
if(insertOptionHere == null) {
theOldList.appendChild(theNewList.options[0]);
} else {
theOldList.insertBefore(theNewList.options[0], theOldList.options[insertOptionHere]);
}
}
theNewList.remove();
}
Dadurch wird die alte Liste in ein temporäres Element geklont, die Optionen aus der alten Liste geleert und dann jede Option aus der temporären Liste an ihrer alphabetischen Stelle zurück in die alte Liste kopiert. Dann wird die temporäre Liste gelöscht.
Das Problem dabei ist, dass alles außer den Ereignis-Listenern kopiert wird. Ich muss also dieselbe Auswahlliste mit denselben Optionen verwenden, sie aber verschieben. Ich habe mir Beispiele für die Blasensortierung angesehen und versucht, sie an Optionselemente statt an Array-Elemente anzupassen, aber wenn ich zwei Elemente vertausche, muss ich eines in einem temporären Element speichern, und dadurch wird der Ereignis-Listener entfernt.Ist das möglich? Gibt es eine Möglichkeit, ausgewählte Listenoptionen auszutauschen und gleichzeitig die Ereignis-Listener beizubehalten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post