Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка div (https://javascript.ru/forum/misc/18120-sortirovka-div.html)

Dorian_bs 17.06.2011 23:50

Сортировка div
 
Всем добрый вечер.
Возникла проблема с написанием скрипта сортировки div-ов.

Суть задачи:
Например:
Существуют дивы


<div id="sortirovka">
<div id="id1">
 <div id="id1-1">09:23.31.12.2011</div>
 Я контент
</div>
<div id="id2">
 <div id="id2-1">12:45.30.12.2011</div>
 Я контент
</div>
<div id="id3">
 <div id="id3-1">12:06.22.11.2011</div>
 Я контент
</div>
<div id="id4">
 <div id="id4-1">11:21.29.12.2011</div>
 Я контент
</div>
<div id="id5">
 <div id="id5-1">03:51.34.06.2010</div>
 Я контент 
</div>
</div>


Необходимо создать скрипт, который будет сортировать список по дате с " #id* "-ми От B до А (последние материалы вверху).

Следовательно в результате должно получиться -

<div id="sortirovka">
<div id="id1">
 <div id="id1-1">09:23.31.12.2011</div>
 Я контент
</div>
<div id="id2">
 <div id="id2-1">12:45.30.12.2011</div>
 Я контент
</div>
<div id="id4">
 <div id="id4-1">11:21.29.12.2011</div>
 Я контент
</div>
<div id="id3">
 <div id="id3-1">12:06.22.11.2011</div>
 Я контент
</div>
<div id="id5">
 <div id="id5-1">03:51.34.06.2010</div>
 Я контент 
</div>
</div>


Заранее спасибо! :)

Aetae 18.06.2011 00:04

42:06?

Sweet 18.06.2011 00:12

Ты нам задачу поставил?:blink: Кому тут
Цитата:

Сообщение от Dorian_bs
Необходимо создать скрипт, который будет сортировать список по дате

???

Dorian_bs 18.06.2011 00:25

Aetae, опечатка..) Там "12".

Sweet, Нет. Я бы написал Суть Вашей задачи.
Просто много времени на это потратил. Не получается заставить их сортироваться.

Aetae 18.06.2011 00:42

Использовать id в данном случае неудобно, уникальная идентификация оправданна только если помимо сортировки с каждым конкретным элементом будут возможные ещё какие-либо действия.

Кстати уже набросал код, но бесплатно не отдам. *злобный раскатистый смех из-за монитора*

Цитата:

Сообщение от Dorian_bs (Сообщение 109264)
Aetae, опечатка..) Там "12".

Угу, ещё 34.06.

SlavaPav 18.06.2011 00:49

Не лучше заменить div#id элементом time?

Dorian_bs 18.06.2011 00:57

Aetae, в лс..

ksa 20.06.2011 09:31

Цитата:

Сообщение от Aetae
уже набросал код, но бесплатно не отдам

Видать встал на путь стяжательства... :D

Aetae 20.06.2011 09:35

Да не, уже отдал на халяву.Я хоть и злой, но добрый.)

FINoM 20.06.2011 14:32

http://ru.wikipedia.org/wiki/%D0%A1%...BA%D0%BE%D0%BC

Aetae 20.06.2011 15:44

FINoM
К чему оно, чем те встроенный sort() не нра?)

FINoM 20.06.2011 16:59

Цитата:

Сообщение от Aetae
К чему оно, чем те встроенный sort() не нра?)

У меня неделю назад была задача отсортировать массив объектов по какой-нибудь ветви (например, obj.a.b.c). Задачу нужно было решить быстро, поэтому воспользовался "пузырьком" и некоторыми извращениями.

Aetae 20.06.2011 18:49

arr.sort(functon(obj,obj2){return obj.a.b.c-obj2.a.b.c})
?

FINoM 20.06.2011 19:31

Цитата:

Сообщение от Aetae
arr.sort(functon(obj,obj2){return obj.a.b.c-obj2.a.b.c})

Хмм... А минус тут причем? http://javascript.ru/Array/sort - вот тут написано, что функция может возвращать 0, -1, 1, то есть по сути смотрится знак числа, не беря в расчет значение (грубо говоря, -1==-34, 1==7.53, 0==0)?
Насколько кроссбраузерен этот метод?
Как получить исходный массив? Только клонированием?

Стыдно что я раньше о таком не знал, просто чудесный метод.
x = document.getElementsByTagName('a');
a = Array.prototype.slice.call(x, 0);
a.sort(function(n1, n2){
  var h1 = n1.innerHTML,
      h2 = n2.innerHTML;
  return h1<h2 ? -1 : (h1>h2 ? 1 : 0)});
Вот тебе и сортировка нод по какому-нибудь параметру.

Aetae 20.06.2011 19:51

Вопрос:
>Хмм... А минус тут причем?

Ответ:
>http://javascript.ru/Array/sort - вот тут написано, что функция может возвращать 0, -1, 1, то есть по сути смотрится знак числа, не беря в расчет значение (грубо говоря, -1==-34, 1==7.53, 0==0)?

>Насколько кроссбраузерен этот метод?
Полностью)

Aetae 20.06.2011 20:12

sort кстати не привязан к Array, его также можно напрямую применять к x.


Вообще чаще приходится юзать не sort(), а sort(function(a,b){return a-b}) ибо:
arr=[ 111 , 222, 12 , 33, 444]

alert('sort() : \n' + arr.sort())

alert('sort(function(a,b){return a-b}) : \n' + arr.sort(function(a,b){return a-b}))

alert('sort(function(a,b){return b-a}) : \n' + arr.sort(function(a,b){return b-a}))

Kolyaj 21.06.2011 09:55

Цитата:

Сообщение от Aetae
sort кстати не привязан к Array, его также можно напрямую применять к x.

Все методы массивов не привязаны к массивам. Их можно применять к любым другим объектам, у которых есть числовые свойства и length.

Но только не в IE, там методы массивов нельзя применять к DOM-объектам, т.к. DOM там находится в стороне от JavaScript. Так что этот код тоже не будет работать
Цитата:

Сообщение от FINoM
x = document.getElementsByTagName('a');
a = Array.prototype.slice.call(x, 0);



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