|
javascript сортировка option и value по алфавиту
На странице есть списки например
Код:
<select multiple="multiple"> Как выстроить эти списки по алфавиту(с сохранением value и selected у option) при загрузке страницы, чтобы получалось так Код:
<select multiple="multiple"> |
<select multiple="multiple"> <option value="2" selected="selected">С отделкой</option> <option value="3">Без отделки</option> </select> <select multiple="multiple"> <option value="2" selected="selected">Банан</option> <option value="3">Абрикос</option> <option value="4">Зелень</option> </select> <script> document.querySelectorAll('select').forEach(sel=>{ [...sel.children].sort((a,b)=> a.text > b.text ? 1 : a.text < b.text ? -1 : 0).forEach(el=>sel.appendChild(el)); }); </script> |
mopsusha,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script> document.addEventListener("DOMContentLoaded", function() { var select = document.querySelectorAll("select"); [].forEach.call(select, function(sel) { [].slice.call(sel.options, 0).sort(function(a, b) { return a.text > b.text ? 1 : a.text < b.text ? -1 : 0 }).forEach(function(o) { sel.appendChild(o) }) }) }); </script> </head> <body> <select multiple="multiple"> <option value="2" selected="selected">С отделкой</option> <option value="3">Без отделки</option> </select> <select multiple="multiple"> <option value="2" selected="selected">Банан</option> <option value="3">Абрикос</option> <option value="4">Зелень</option> </select> </body> </html> |
j0hnik,
sort без return -1, не айс |
рони,
Какие нюансы? |
Цитата:
|
рони,
можете примерчик такого поведения черкануть? |
j0hnik,
документации по sort, разве недостаточно? |
рони,
если не сложно уделите минутку... ;) |
j0hnik,
<script> var str = "12345678901234567890"; for (var i = 0; i < 50; i++) { document.write("<br>"+str.split("").sort(function() { return Math.random() > 0.5 }).sort(function(a,b) { return a > b })) //ожидаемый результат 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9 } </script> |
Часовой пояс GMT +3, время: 23:53. |
|