Программирование > JavaScript & JScript

JavaScript: сканирование папок

<< < (7/8) > >>

Макс:
где поставить счетчик - это алгоритмическая задача и к яваскриптам отношения не имеет:

--- Код: ---
var level = 0;
function ViewNode(root){
.....
     level++;
     ViewNode(root.childNodes.item(i));
     level--;
...
}
--- Конец кода ---
наверное так.

Leech:
Да, со всем этим разобрался...
Насколько я знаю, можно менять средствами JavaScript содержимое XML. После того, как загружена страничка и выполнены некоторые функции, структура XML теряется из памяти, так? Сделал новый атрибут, который является признаком того, развернута ли текущая ветвь дерева. Т.е. после того, как мы хотим что-то свернуть или развернуть, мы должны изменить значение атрибута на соответствующей ветви, затем очистить текущее содержимое html (ту структуру, которую уже отобразили), и снова всё с начала, только с новыми атрибутами.
1. Что имеет больший смысл: изменить атрибут и сделать рефреш страницы или очистить то, что мы написали (если да, то как это реализовать?)
2. И как, вообще, изменить состояние атрибута?

P.S. Где почитать про этот MSXML?

Макс:
Leech
с помощью MSXML ты можешь полностью управлять структурой XML-документа: добавлять/удалять узлы, аттрибуты и т.д.

--- Цитировать --- После того, как загружена страничка и выполнены некоторые функции, структура XML теряется из памяти, так?
--- Конец цитаты ---
если я тебя правильно понял, то в памяти остается обновленная структура и ты с ней можешь делать все что хочешь (и что позволяет MSXML)

--- Цитировать ---1. Что имеет больший смысл: изменить атрибут и сделать рефреш страницы или очистить то, что мы написали (если да, то как это реализовать?)
--- Конец цитаты ---
если тебе, после изменения атрибута, не нужны никакие дополнительные данные с сервера, то никакого рефреша не нужно. Если в XML у тебя хранится вся информация о дереве каталогов, то ИМХО достаточно переписать тот HTML, что был раньше или его часть.
Насчет того, как это сделать, если ты пишешь исключительно под MSIE, то просто изменить аттрибут innerHTML.


--- Цитировать ---2. И как, вообще, изменить состояние атрибута?
--- Конец цитаты ---


--- Код: --- XMLNode.attributes.item(0).value = \'New value\';
--- Конец кода ---


--- Цитировать ---P.S. Где почитать про этот MSXML?
--- Конец цитаты ---

"XSLT. Справочник" - Майкл Кей (2-ое издание) стр. 751 -807 :)
При установке MSXML с ним поставляется документация в chm-формате.
http://www.google.com/search?q=msxml&sourceid=opera&num=0&ie=utf-8&oe=utf-8
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmmscxmloverview.asp

Leech:
Чёрт, как всё просто... хорошо ребята из Микрософта постарались...
Макс... надеюсь, последний вопрос...  А то точно придется ехать в Кременчуг с пивом :)
Я при нажатии на "плюс" ("минус") вызываю функцию, в которую передаю содержание атрибута "name", соответствующее текущему узлу. После этого я должен найти папку из моей структуры и поменять атрибут с признаком о том развернута или свернута данная ветвь. Простым перебором, я так понял, не подходит, потому как могут оказаться две одинаковых папки в разных ветвях.
Тогда, я так понимаю, нужно записывать не только текущий, но и все содержимое данных атрибутов, стоящих выше текущей ветви. Или есть какой-то другой вариант?

Макс:
ИМХО, самое логичное - поменять чуть структуру, формировать XML вида:

И работатьс этими идентификаторами. Вместо цифры наверное можно использовать дату создания папки (не думаю, что найдется 2 разных папки с одинаковыми именами и датой создания)

и работать примерно так :

--- Код: ---
// XML который обрабатываем
xmlstr = \'text\';
xmldoc = new ActiveXObject("Msxml2.DOMDocument");
xmldoc.loadXML(xmlstr);
root = xmldoc.documentElement; // Начало разбора документа
// выбираем узел с указанным ID
//node = xmldoc.selectSingleNode("//*[@id=\'maxim\']"); // так тоже работает
node = xmldoc.selectSingleNode("//*[@id=\'maxim\' and @name=\'dir\']");
node.text = \'WebScript.ru\';
alert(xmldoc.xml);

--- Конец кода ---

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии