Сортировка <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, время: 15:07. |