Автор Тема: JavaScript: сканирование папок  (Прочитано 16346 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
JavaScript: сканирование папок
« Ответ #30 : 11 Декабря 2003, 20:13:22 »
где поставить счетчик - это алгоритмическая задача и к яваскриптам отношения не имеет:

var level = 0;
function ViewNode(root){
.....
     level++;
     ViewNode(root.childNodes.item(i));
     level--;
...
}
наверное так.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Leech

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
JavaScript: сканирование папок
« Ответ #31 : 13 Декабря 2003, 20:30:23 »
Да, со всем этим разобрался...
Насколько я знаю, можно менять средствами JavaScript содержимое XML. После того, как загружена страничка и выполнены некоторые функции, структура XML теряется из памяти, так? Сделал новый атрибут, который является признаком того, развернута ли текущая ветвь дерева. Т.е. после того, как мы хотим что-то свернуть или развернуть, мы должны изменить значение атрибута на соответствующей ветви, затем очистить текущее содержимое html (ту структуру, которую уже отобразили), и снова всё с начала, только с новыми атрибутами.
1. Что имеет больший смысл: изменить атрибут и сделать рефреш страницы или очистить то, что мы написали (если да, то как это реализовать?)
2. И как, вообще, изменить состояние атрибута?

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

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
JavaScript: сканирование папок
« Ответ #32 : 13 Декабря 2003, 21:55:41 »
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
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Leech

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
JavaScript: сканирование папок
« Ответ #33 : 13 Декабря 2003, 22:56:12 »
Чёрт, как всё просто... хорошо ребята из Микрософта постарались...
Макс... надеюсь, последний вопрос...  А то точно придется ехать в Кременчуг с пивом :)
Я при нажатии на "плюс" ("минус") вызываю функцию, в которую передаю содержание атрибута "name", соответствующее текущему узлу. После этого я должен найти папку из моей структуры и поменять атрибут с признаком о том развернута или свернута данная ветвь. Простым перебором, я так понял, не подходит, потому как могут оказаться две одинаковых папки в разных ветвях.
Тогда, я так понимаю, нужно записывать не только текущий, но и все содержимое данных атрибутов, стоящих выше текущей ветви. Или есть какой-то другой вариант?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
JavaScript: сканирование папок
« Ответ #34 : 14 Декабря 2003, 02:08:09 »
ИМХО, самое логичное - поменять чуть структуру, формировать XML вида:
id="12"/>
И работатьс этими идентификаторами. Вместо цифры наверное можно использовать дату создания папки (не думаю, что найдется 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);
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Leech

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 26
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
JavaScript: сканирование папок
« Ответ #35 : 14 Декабря 2003, 10:31:56 »
Спасиб... эт всё...
  Высылаю в Кременчуг боченок пива :)

 

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