Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JQuery - сортировка XML 
V
    Опции темы
Feldsher
Дата 22.5.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Ребята, как с помощью сабжа сортировать набор одноуровневых тегов?

<response>
<date>11.03</date>
<date>11.04</date>
<date>11.02</date>
</response>


Заранее спасибо.
PM MAIL   Вверх
ksnk
Дата 22.5.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



пузырьковая сортировка. Нужно пользовать функции
.children()
.next()
.text()
.prepend()

вроде больше ничего экзотичного не понадобтся ;)
Очень уж сильно использовать возможности jQuery не придумалось как. Так что на чистом Dome оно будет работать лучше...

Можно использовать функцию .map или each, чтобы собрать в правильном порядке все элементы, а затем заменить контент объемлющего дива свежепостроенным, но это, imho, неспортивно


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Feldsher
Дата 22.5.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Спасибо и за подсказки, и за всестороннюю критику. С меня плюсы))

Это сообщение отредактировал(а) Feldsher - 23.5.2010, 12:40
PM MAIL   Вверх
Feldsher
Дата 23.5.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Я дико извиняюсь - как поменять элементы местами? Код сбоит)


tags = xmlDoc.getElementsByTagName("item");

var i=5;
var j=10;

var t = tags[i].parentNode.appendChild(document.createTextNode(''));

tags[j].parentNode.replaceChild(tags[j],t);
t.parentNode.replaceChild(tags[i],tags[j]);
tags[j].parentNode.replaceChild(t,tags[j]);

t.parentNode.removeChild(t); 
PM MAIL   Вверх
ksnk
Дата 23.5.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



объяснить сложно, проще написать... классический бабл, без излишней оптимизации, правда...

Код

bubble: do {
   var dates= xmlDoc.getElementsByTagName("date");
   
   for (var i=0 ;i<dates.length-1;i++){
     if (dates[i].innerHTML>dates[i+1].innerHTML){
        var t =dates[i].nextSibling,parent=dates[i].parentNode;
        parent.insertBefore(dates[i],dates[i+1]);
        parent.insertBefore(dates[i+1],t);
        continue bubble;
     }
   }
   break;
} while (true);

Если элемент уже где-то стоял, он автоматически оттуда удалится и вставится на новое место. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Feldsher
Дата 23.5.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Большое спасибо. А я полночи бьюсь с appendChild()  и replaceNode() smile

Не подскажете в чём "бока" моей реализации этого подхода?)


Это сообщение отредактировал(а) Feldsher - 23.5.2010, 14:35
PM MAIL   Вверх
ksnk
Дата 23.5.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 38
Всего: 386



Цитата(Feldsher @  23.5.2010,  13:00 Найти цитируемый пост)
tags[j].parentNode.replaceChild(tags[j],t);
t.parentNode.replaceChild(tags[i],tags[j]);
tags[j].parentNode.replaceChild(t,tags[j]);


Цитата

Метод replaceChild
Синтаксис:  узел.replaceChild(newChild, oldChild)
Аргументы:  newChild, oldChild — выражения типа Node
Результат:  узел Node
Исключения: HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR,
            NOT_FOUND_ERR
Поддержка:  Соответствует стандарту.
            Соответствует стандарту.
Метод replaceChild заменяет узел oldChild в списке детей данного узла на узел newChild и возвращает oldChild в качестве результата. Если newChild уже был в списке детей, то он удаляется из него до замены. 



порядок параметров должен быть другим


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Feldsher
Дата 23.5.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 14.3.2006

Репутация: нет
Всего: нет



Спасибо)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.