Форум hotibo.ru

Сайты - по стандартам, но не стандартные сайты!






#31 16.06.2010 17:22

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

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

Нет на форуме

 

#32 16.06.2010 17:25

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Да ничего, все OK!

Нет на форуме

 

#33 19.06.2010 09:18

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Добрый день!
Скрипт я опробовал. И должен сообщить, что его я слегка откорректировал. Причина в том, что при повторном щелчке по наименованию, слой закрывался и "минус" менялся на "плюс " . Теперь ничего этого не происходит.
Текст скрипта:
--------------------------------------------------------------------------------------------------------------
function switchNode(oTarget,aWinParams)
  {
  if(oTarget)
    {
    var oList = oTarget.parentNode.parentNode.getElementsByTagName("div")[1]; 
    var oImg = oTarget.parentNode.getElementsByTagName("img")[0];
    if(oList.className == "nodeChildrenOpen")
      {
      if(!aWinParams)
        {
        oImg.src = "img/plus.gif";
        oList.className = "nodeChildrenHidden";
        }
      else
        {
        open(aWinParams[0], aWinParams[1]);
        }
      }
   else
     {
     oImg.src = "img/minus.gif";
     oList.className = "nodeChildrenOpen";
     if(aWinParams)
       {
       open(aWinParams[0], aWinParams[1]);
       }
     }
   }
else
   {
   open(aWinParams[0], aWinParams[1]);
   }
}
-------------------------------------------------------------------------------------------------------------------------------
smile

Отредактированно mdi (19.06.2010 09:19)

Нет на форуме

 

#34 19.06.2010 11:42

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
А я сразу и не понял, что такая задумка имеется - открывать/закрывать только с помощью плюс/минус. Теперь ясно...

Нет на форуме

 

#35 19.06.2010 12:27

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Нет. Я просто неочень ясно выразился:
при нажатии плюс\минус просто раскрывается\закрывается  директорий (слой);
при нажатии на наименование первый раз, - все срабатывает; т.е. плюс меняется на минус и в правый фрейм выводится содержимое страницы. Если щелкать > 1 раза, то ничего не происходит ...

Нет на форуме

 

#36 19.06.2010 12:38

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Вот если бы теперь решить задачу закрытия всех слоев с оставлением открытой ветки с выбранным пунктом (по-возможности, без массива), то можно было бы считать, что я Вас отвлекал не зря ....

Нет на форуме

 

#37 19.06.2010 16:09

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Я еще в выходные дни сделал закрытие предыдущего открытого пункта при открытии нового, но теперь надо кое-что изменить...
А вообще мне не совсем понятна эта идея, когда при повторном нажатии на наименование ветвь не закрывается (ведь обыно так бывает!), а снова открывается окно.
В любом случае можно все устроить. Да, и еще, в шаблон страницы не будут внесены какие-либо изменения? Ведь если добавить какие-нибудь теги между уже существующими, то сценарий работать не будет (может даже будут ошибки).

Нет на форуме

 

#38 19.06.2010 17:01

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

AKS написал:

mdi
Я еще в выходные дни сделал закрытие предыдущего открытого пункта при открытии нового, но теперь надо кое-что изменить...
А вообще мне не совсем понятна эта идея, когда при повторном нажатии на наименование ветвь не закрывается (ведь обыно так бывает!), а снова открывается окно.
В любом случае можно все устроить. Да, и еще, в шаблон страницы не будут внесены какие-либо изменения? Ведь если добавить какие-нибудь теги между уже существующими, то сценарий работать не будет (может даже будут ошибки).

Пока Вы несовсем изменили:
возможен такой вариант, - вынести вызов скрипта, скажем, на первый слой и в нем проверять откуда щелчок, - с иконки или с наименования ?
Если это глобальные переделки, то, может тогда, не стоит ?
А насчет добавления тегов, то, я думаю, что в любом случае будут ошибки, если не сделать перевывод ...
Ведь все делается в XML ... А он имеет дурную черту: как все загружено в память, так и существует ...
Изменения можно увидеть только сделав перевывод ... (по-крайней мере, я так понял из литературы; да и сам столкнулся с такой его особенностью) ...

Нет на форуме

 

#39 19.06.2010 17:05

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Вот код, сначала его потестируйте, потом продолжим:

Код:

var listTools = {
    mainList : null,
    mainImg : null,
    subList : null,
    subImg : null,
    openClass : "nodeChildrenOpen",
    hiddenClass : "nodeChildrenHidden",
    imgs : new function() {
        this.plus = new Image;
        this.minus = new Image;
        this.plus.src = "images/plus.gif";
        this.minus.src = "images/minus.gif";
    },
    changeProps : function(oBlock, sClassName, oImg, sSrc) {
        oBlock.className = sClassName;
        oImg.src = sSrc;
    },
    switchNode : function(oTarget, aWinParams) {
        if(oTarget) {
            var oParent = oTarget.parentNode.parentNode;
            var oList = oParent.getElementsByTagName("div")[1];
            var oImg = oTarget.parentNode.getElementsByTagName("img")[0];
            if(oList.className == this.openClass) {
                this.changeProps(oList, this.hiddenClass, oImg, this.imgs.plus.src);
            }
            else {
                this.changeProps(oList, this.openClass, oImg, this.imgs.minus.src);
                if(this.subList && this.subList != oList) {
                    this.changeProps(this.subList, this.hiddenClass, this.subImg, this.imgs.plus.src);
                }
                if(this.mainList && this.mainList != oList && oParent.parentNode.parentNode != this.mainList) {
                    this.changeProps(this.mainList, this.hiddenClass, this.mainImg, this.imgs.plus.src);
                }
                if(oParent.parentNode.parentNode.className == this.openClass) {
                    this.subList = oList; this.subImg = oImg;
                }
                if(oParent.parentNode.parentNode.className != this.openClass) {
                    this.mainList = oList; this.mainImg = oImg;
                }
                if(aWinParams) { open(aWinParams[0], aWinParams[1]); }
            }
        }
        else { open(aWinParams[0], aWinParams[1]); }
    }
}

Поместил все в один объект, добавил предварительную загрузку изображений, и еще кое-что...

Нет на форуме

 

#40 19.06.2010 17:07

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Да, если что, Вы там имена меняйте, как Вам захочется...
Забыл указать, что используя этот объект, в аттрибутах ссылок "onclick" нужно теперь писать: listTools.switchNode("здесь все, как раньше")

Отредактированно AKS (19.06.2010 17:17)

Нет на форуме

 

#41 19.06.2010 17:28

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Спасибо. Мне бы такого учителя, да пораньше: сейчас бы никаких вопросов не задавал бы .... smile
Результат смогу сказать Вам только завтра ....

Нет на форуме

 

#42 19.06.2010 17:38

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Какого "учителя", я сам еще javascript только учу! wink

Нет на форуме

 

#43 19.06.2010 17:45

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Тем не менее ... Почему Вы считаете, что учитель, - это человек обязательно с бородой и палочкой ?
Учитель, - это тот, кто может правдиво и доходчиво изложить материал.

Нет на форуме

 

#44 19.06.2010 17:46

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

А насчет открытия/закрытия что решили?

Нет на форуме

 

#45 19.06.2010 17:49

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Я все-таки оставлю как есть, т.е. при 2 щелчке закрытие не происходит ...

Нет на форуме

 

#46 19.06.2010 17:52

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

Ну там также переделаете, это все касается только метода switchNode...
Все остальное вроде работает, если не менять html-код.

Нет на форуме

 

#47 19.06.2010 17:55

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

А как Вы относитесь к первому за сегодняшний день вопросу:
переносу onclick в первый DIV ?
Это большие переделки или - нет ?

Нет на форуме

 

#48 19.06.2010 18:00

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

А ведь сразу не понял, и до сих пор не пойму - что должно происходить с деревом при клике по первому элементу дерева?

Нет на форуме

 

#49 19.06.2010 18:16

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Речь не об этом: ходят упорные слухи, что если клик перенести туда, то освободятся все ссылки от вызова скрипта. Просто, якобы, в скрипте проверяется откуда клик, ну, типа:




Якобы: "В этом случае Вы избавитесь от кучи ненужных аттрибутов onclick в IMG и в A. "

Отредактированно mdi (19.06.2010 18:17)

Нет на форуме

 

#50 19.06.2010 18:22

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

На сегодня, - все: до свидания, т.е. - до завтра!

Нет на форуме

 

#51 19.06.2010 18:23

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

Можно, но придется написать дополнительные проверки. Вообще, если бы была соответствующая разметка, как я и предлагал изначально, то код можно было сделать намного стройнее и проще.
Короче говоря, возможно многое... Надо пробовать.

Нет на форуме

 

#52 20.06.2010 11:00

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Честно говоря, у меня ничего не изменилось (может быть так и должно быть). Разве что стало несколько медленнее загружаться. Я сделал следующее:
1. изменил крипт
---------------------------------------------------------------------------------------------------------------------------
   
---------------------------------------------------------------------------------------------------------------------------
2. изменил вызов скрипта:
---------------------------------------------------------------------------------------------------------------------------
onclick='listTools.switchNode(this,["1a.files/%72ightframe.files/VS.htm","fraContent"]); return false;'

Нет на форуме

 

#53 20.06.2010 15:59

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Только к вечеру смог  освободится.
Там, в switchNode, Вы напрасно скопировали прежний код. Я ведь специально поместил в один объект все переменные, предварительно загруженные картинки, имена классов сделал свойствами объекта.
Чтобы увидеть, что я изменил, надо было использовать сценарий в том виде, в каком я Вам его предложил.
Изменения в работу сценария я вносил следующие:
1. В случае открытия любой из шести главных ветвей, должна закрываться любая открытая ранее, причем закрывая свои "дополнительные" ветви.
2. В случае открытия любой "дополнительной" ветви, должна закрываться ранее открытая "дополнительная" ветвь из этого раздела.
Вы изменили switchNode и ничего этого теперь не происходит, к тому же не используются предзагруженные изображения и т.д.

Нет на форуме

 

#54 20.06.2010 16:22

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Признаю свою ошибку, - лежачего не бьют ....
Постараюсь сегодня восстановить Ваш вариант и завтра сказать Вам что получилось ...
Единственный вопрос:
вот эти перечисленные Вами пункты относятся к рабате с чисто деревом, или с наименованием;
грубо говоря, - щелчок по иконке или по наименованию.

Отредактированно mdi (20.06.2010 16:33)

Нет на форуме

 

#55 20.06.2010 16:32

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Сценарий я писал в выходные, когда не знал, что нужно открывать/закрывать меню только плюсом/минусом, поэтому будет работать так, как до выходных. Но это легко будет изменить, как это Вы сделали вчера. Честно говоря, я бы советовал так и оставить, но последнее слово за Вами...

Нет на форуме

 

#56 20.06.2010 16:35

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Сэр. Не говорите загадками:
мне оставить как сейчас или так, как Вы прислали ?

Нет на форуме

 

#57 20.06.2010 16:38

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

mdi
Я хотел сказать, чтобы Вы попробовали в деле сценарий, который я выкладывал вчера в 19.05. Потестируйте, пощелкайте хорошенько, затем будем делать выводы.

Нет на форуме

 

#58 20.06.2010 16:40

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Хорошо. Вас понял. Завтра скажу результат.

Нет на форуме

 

#59 20.06.2010 16:44

AKS
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 409

Re: Закрытие всех слоев DIV, составляющих меню

OK!

Нет на форуме

 

#60 21.06.2010 10:52

mdi
Разбирающийся
Зарегистрирован: 15.06.2010
Сообщений: 84

Re: Закрытие всех слоев DIV, составляющих меню

Я попробовал и получил ошибку:

mdi написал:

Ошибка синтаксического анализа XML: неправильный
Адрес: file:///F:/VSNB/top.xsl
Строка 76, символ 31: if(this.subList && (this.subList != oList))
-----------------------------------------------^

Прошу извинить, в письме стрелочку пришлось подгонять вручную.
Текст XSLT-таблицы в HTML:

mdi написал:


 


   VSN
   
   
   
   

Честно говоря, эта строка не получает этот номер, что мне не понятно ...
Можно, конечно, условие разбить на два, скажем:

mdi написал:

if(this.subList)
  {
   if(this.subList != oList)
     {
      this.changeProps(this.subList, this.hiddenClass, this.subImg, this.imgs.plus.src);
      }
   }

Но может быть можно по другому ??? (Ох уж этот FF ... или я в чем то не прав ...)

Отредактированно mdi (21.06.2010 10:53)

Нет на форуме

 

Board footer