Select-Box
mrlaffer
- javascript
Guten Tag,
Ich habe zurzeit zwei <select> boxen, welche wie folgt aufgebaut sind:
<form name="MeineForm">
<select name="OrtVon" size="7" style="width: 100%;" ondblclick="javascript:Move('SpoSearchForm', 'OrtVon', 'OrtAn', document.forms['MeineForm'].elements['OrtVon'].selectedIndex);">
<option value="1">Luzern</option>
<option value="2">Zürich</option>
</select>
<select name="OrtAn" size="7" style="width: 100%;" ondblclick="javascript:Move('SpoSearchForm', 'OrtAn', 'OrtVon', document.forms['MeineForm'].elements['OrtVon'].selectedIndex);">
</select>
</form>
Es können jeweils mit einem Double-Klick die einzelnen Werte von "OrtVon" nach "OrtAn" und umgekehrt verschoben werden.
Beim Verschieben der Werte von "OrtVon" nach "OrtAn" muss ich die Werte im Feld "OrtAn" anschliessend mit folgendem Skript alphabetisch sortieren:
/**
* @desc Sortiert eine Selectliste nach Alphabet
*
* @param string SpoForm
* @param string SpoElement
* @return void
*/
function SpoElementSortlist(SpoForm, SpoElement) {
try{
var obj = document.getElementById(SpoElement);
var values = new Array();
for(var i = 0; i < obj.options.length; i++) {
values.push(obj.options[i].innerHTML + "--xx--" + obj.options[i].value);
}
values = values.sort();
for(var i = 0; i < values.length; i++) {
valueArray = values[i].split('--xx--');
obj.options[i].innerHTML = valueArray[0];
obj.options[i].value = valueArray[1];
}
}
catch(e){
//alert('Fehler: ' + SpoElement);
}
}
Leider ist dies nicht performant genug, da es unter umständen tausende von Einträgen geben kann.
Habt ihr eine schnellere oder einfachere Lösung?
Grüsse
Julien
Was bitte hat "javascript:" in einem Event-Aufruf zu suchen?
Gruß, LX
Lol das hat jetzt wirklich nichts mit dem Performanceproblem zu tun.
Was bitte hat "javascript:" in einem Event-Aufruf zu suchen?
Gruß, LX
Hi,
Es können jeweils mit einem Double-Klick die einzelnen Werte von "OrtVon" nach "OrtAn" und umgekehrt verschoben werden.
Beim Verschieben der Werte von "OrtVon" nach "OrtAn" muss ich die Werte im Feld "OrtAn" anschliessend mit folgendem Skript alphabetisch sortieren:
...
Leider ist dies nicht performant genug, da es unter umständen tausende von Einträgen geben kann.
Na ja, bei der Methode, Zusammensetzen, in Array speichern, Array sortieren, wieder auseinandernehmen, Select neu aufbauen - da kannst du auch kein allzu performantes Verhalten erwarten.
Die "neue" Option gleich an der "richtigen" Stelle einzufuegen, sollte etwas performanter moeglich sein. (Ob alle Browser das richtig umsetzen, wenn man die Option mittels insertBefore umhaengt, muesste aber getestet werden.)
MfG ChrisB
Besten Dank für die schnelle Antwort.
Dein Lösungsvorschlag hat mich auf eine neue Idee gebracht, womit ich das Problem beheben kann.
Grüsse Julien
Hi,
Es können jeweils mit einem Double-Klick die einzelnen Werte von "OrtVon" nach "OrtAn" und umgekehrt verschoben werden.
Beim Verschieben der Werte von "OrtVon" nach "OrtAn" muss ich die Werte im Feld "OrtAn" anschliessend mit folgendem Skript alphabetisch sortieren:
...
Leider ist dies nicht performant genug, da es unter umständen tausende von Einträgen geben kann.Na ja, bei der Methode, Zusammensetzen, in Array speichern, Array sortieren, wieder auseinandernehmen, Select neu aufbauen - da kannst du auch kein allzu performantes Verhalten erwarten.
Die "neue" Option gleich an der "richtigen" Stelle einzufuegen, sollte etwas performanter moeglich sein. (Ob alle Browser das richtig umsetzen, wenn man die Option mittels insertBefore umhaengt, muesste aber getestet werden.)
MfG ChrisB