Сортировка <option> в <select>
Как сделать чтобы все <option> в <select> сортировалис автоматически? Например по алфавиту.
|
<select id='foo'>
<option>
Г
</option>
<option>
А
</option>
<option>
В
</option>
<option>
Б
</option>
</select>
<script type='text/javascript'>
(function () {
var wrapper = document.getElementById("foo"),
nodes = wrapper.getElementsByTagName("OPTION"),
len = nodes.length,
sorted = [];
while (nodes[0]) {
sorted.push(new String(nodes[0].value));
sorted[sorted.length-1].element = nodes[0];
wrapper.removeChild(nodes[0]);
}
sorted = sorted.sort();
for (var i = 0; i < len; i++) {
wrapper.appendChild(sorted[i].element);
}
})();
</script>
|
Цитата:
Вариант сортировки селектора по алфавиту:
<select id='foo'>
<option value="4">Г</option>
<option value="1">А</option>
<option value="2">Б</option>
<option value="3">В</option>
</select>
<script type='text/javascript'>
function sorted(id){for(var c=document.getElementById(id),b=c.options,a=0;a<b.length;)
if(b[a+1]&&b[a].text>b[a+1].text){c.insertBefore(b[a+1],b[a]);a=a>=1?a-1:a+1}else a++;
b[0].selected=true };
sorted("foo");
</script>
|
<script type='text/javascript'>
function sorted(id){for(var c=document.getElementById(id),b=c.options,a=0;a<b. length;) if(b[a+1]&&b[a].text>b[a+1].text){c.insertBefore(b[a+1],b[a]);a=a>=1?a-1:a+1}else a++; b[0].selected=true }; sorted("foo"); </script>[/html][/quote] Спасибо за супер не читабельньій код. Самьіе лучшие знания. Очень полезно. Еще раз спасибо. |
hurricane, а где вы берете списки, что их приходится средствами клиента сортировать?
|
vipslord,
так и Internet Explorer научился за это время value из text option брать ))) так что берите читаемый код из 2 поста. |
| Часовой пояс GMT +3, время: 06:51. |