Просмотр полной версии : Сортировка <option> в <select>
hurricane
27.12.2010, 12:01
Как сделать чтобы все <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>
nodes[0].value
value ни у одного option неуказано Internet Explorer неотсортирует ...
Вариант сортировки селектора по алфавиту:
<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>
vipslord
06.04.2015, 11:13
<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 поста.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot