Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   динамический порядок (https://javascript.ru/forum/events/5025-dinamicheskijj-poryadok.html)

vasos 09.09.2009 16:54

динамический порядок
 
имеем вставку в штмл вот примерно такого вида

<textarea id="xsldata" style="display:none">
<?xml version='1.0' encoding='UTF-8'?>
<doc>
<row><rname>region</rname><fname>Район</fname><ptip>1</ptip></row>
<row><rname>pred</rname><fname>Предприятие</fname><ptip>1</ptip></row>
....
<row><rname>oblast</rname><fname>Область</fname><ptip>1</ptip></row>
</doc>
</textarea>



задача такова что нужно динамически менять порядок строк
таблицы XML

мой алгоритм был таков: ввести дополнительный аттрибут/элемент,
по нему вести сортировку и, соответственно, его и менять при необходимости,
но наткнулся на проблему, насколько я понял, невозможно добавить свой элемент в
XML завернутый в textarea, если это возможно то натолкните плз на решение, если нет, то
другого алгоритма я пока не вижу....может есть у кого-нибудь какие-то идеи по этому поводу?

Octane 09.09.2009 18:20

внутри textarea ваш xml-код представляется, как обычная строка, и браузер никак его не парсит и не преобразует теги в DOM-объекты.

vasos 09.09.2009 23:55

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

Octane 10.09.2009 00:57

Я не понимаю для чего может понадобится помещать xml-код в textarea, но если уж так нужно, то работайте со строкой document.getElementById("xsldata").value или попробуйте создавать DOMDocument из вашего кода, а после изменения помещать новое значение в textarea.

B~Vladi 10.09.2009 10:20

Цитата:

Сообщение от Octane
попробуйте создавать DOMDocument из вашего кода

Это только для ИЕ.
Можно динамически создать XSL документ и трансформировать им XML-строку не внося изменений. На выходе получим распарсенное DOM-дерево:)

Riim 10.09.2009 10:30

Цитата:

Сообщение от vasos
задача такова что нужно динамически менять порядок строк


var arr = str.split(/\r\n/g), x = arr[5];
arr[5] = arr[4];
arr[4] = x;
str.join('\r\n');

vasos 10.09.2009 12:17

Цитата:

Можно динамически создать XSL документ и трансформировать им XML-строку не внося изменений. На выходе получим распарсенное DOM-дерево
так вначале было у меня, но я так и не понял как можно динамически менять порядок строк в таблице, сортировка? ну так нужно сортировать же по чему-то, а это что-то я и хотел внедрить в xml

вобщем в данном случае я просто не могу понять к чему привязаться для изменнения порядка

ПС Работать все это добро :) должно firefox only, к сожалению я новичок, много в ответах могу не понимать, посоветуйте плз алгоритм, а техническую сторону я уж как нибудь постараюсь понять сам

vasos 10.09.2009 13:53

Цитата:

Сообщение от Riim (Сообщение 29747)
var arr = str.split(/\r\n/g), x = arr[5];
arr[5] = arr[4];
arr[4] = x;
str.join('\r\n');

уважаемый Riim, вобщем-то ход ваших мыслей мне вполне понятен и может быть даже удовлетворит, но может вы мне подскажите, какой сепаратор нужно вписать чтобы в каждом элементе массива был row от начала и до конца, примерно так
arr[0]="<row><rname>region</rname><fname>Район</fname><ptip>1</ptip></row>"
arr[1]="<row><rname>pred</rname><fname>Предприятие</fname><ptip>1</ptip></row>"
ну вот чтото такое...заранее благодарен

Riim 10.09.2009 14:06

RegExp#match
/<row>.*?</row>/gi

vasos 10.09.2009 14:26

Цитата:

Сообщение от Riim (Сообщение 29774)
RegExp#match
/<row>.*?</row>/gi


весьма благодарен
второй слеш не будет считатся за окончание выражения? а как его экранировать?

/<row>.*?<\/row>/gi вот так? да?


ПС уже нашел в коментах, спасибо, только регулярное выражение както неправильно работает, но я думаю сам дальше уже, спасибо большое


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