Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.08.2008, 08:38
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

А в JS же есть сортировка у массивов.
Цитата:
sort(compareFunction)
compareFunction
Специфицирует функцию, определяющую порядок сортировки. Если отсутствует, массив сортируется лексикографически (в словарном порядке) в соответствии с конвертацией в строку каждого элемента.
Или велосипедоизобретательств ом занимаетесь или я чего-то не понял? =/
Ответить с цитированием
  #12 (permalink)  
Старый 19.08.2008, 13:38
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Snipe,
Так у массивов же, а тут DOMNodeList.
Ответить с цитированием
  #13 (permalink)  
Старый 20.08.2008, 03:24
Infocatcher
 
Сообщений: n/a

Сообщение от Андрей Параничев Посмотреть сообщение
Так у массивов же, а тут DOMNodeList.
Не писать же функцию сортировки вручную – есть же Array.sort. Его и помучаем:
var ul = document.getElementById("ul-1");
var lis = ul.getElementsByTagName("li"), li, h;
var map = {}, arr = [];
for(var i = 0, len = lis.length; i < len; i++) {
    li = lis[i];
    h = li.textContent || li.innerText; // превед, IE!
    if(!map[h]) // на случай повторяющихся значений h
        map[h] = [li]; // соответствие h => li
    else
        map[h].push(li);
    arr.push(h);
}
arr.sort(); // сортируем массив из h
if(ul._reverse)
	arr.reverse();
ul._reverse = !ul._reverse;
for(var i = 0; i < len; i++) // arr[i] => h => map[h] => li
    ul.appendChild(map[arr[i]].shift());


P.S. Старые версии IE будут нехило ругаться...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск