Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сортировка <option> в <select> (https://javascript.ru/forum/dom-window/14063-sortirovka-option-v-select.html)

hurricane 27.12.2010 12:01

Сортировка <option> в <select>
 
Как сделать чтобы все <option> в <select> сортировалис автоматически? Например по алфавиту.

exec 27.12.2010 13:19

<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>

рони 28.12.2010 13:11

Цитата:

Сообщение от exec
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]
Спасибо за супер не читабельньій код. Самьіе лучшие знания. Очень полезно. Еще раз спасибо.

laimas 06.04.2015 11:48

hurricane, а где вы берете списки, что их приходится средствами клиента сортировать?

рони 06.04.2015 11:59

vipslord,
так и Internet Explorer научился за это время value из text option брать ))) так что берите читаемый код из 2 поста.


Часовой пояс GMT +3, время: 15:07.