Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: А есть ли спецы по .JS надо кодик один поправить
цитата
08/03/13 в 22:20
 andreich
соосбтвенно сабж
есть .js меню всплывающее, чето перестало нормально работать
может кто поправит, хотя не полностью уверен что проблема в коде, но есть огромное подозрение что именно так и обстоит дело
сам код

if (typeof(MooTools) != 'undefined'){

      var subnav = new Array();

      Element.extend(
      {
         hide: function(timeout)
         {
            this.status = 'hide';
            clearTimeout (this.timeout);
            if (timeout)
            {
               this.timeout = setTimeout (this.anim.bind(this), timeout);
            }else{
               this.anim();
            }
         },

         show: function(timeout)
         {
            this.status = 'show';
            clearTimeout (this.timeout);
            if (timeout)
            {
               this.timeout = setTimeout (this.anim.bind(this), timeout);
            }else{
               this.anim();
            }
         },

         setActive: function () {
            //this.addClass(classname);
            this.className+='sfhover';
            /*
            for(var i=0;i<this.childNodes.length; i++) {
               if(this.childNodes[i].nodeName.toLowerCase() == 'a') {
                  //$(this.childNodes[i]).addClass(classname);
                  $(this.childNodes[i]).setActive();
                  return;
               }
            }
            */
         },

         setDeactive: function () {
            //this.removeClass(classname);
            this.className=this.className.replace(new RegExp("sfhover\\b"), "");
            /*
            for(var i=0;i<this.childNodes.length; i++) {
               if(this.childNodes[i].nodeName.toLowerCase() == 'a') {
                  $(this.childNodes[i]).setDeactive();
                  return;
               }
            }
            */
         },

         anim: function() {
            if ((this.status == 'hide' && this.style.left != 'auto') || (this.status == 'show' && this.style.left == 'auto' && !this.hidding)) return;
            this.setStyle('overflow', 'hidden');
            if (this.status == 'show') {
               this.hidding = 0;
               this.hideAll();
               //this.parentNode.setActive();
            } else {
               //this.parentNode.setDeactive();
            }

            if (this.status == 'hide')
            {
               this.hidding = 1;
               //this.myFx1.stop();
               this.myFx2.stop();
               //this.myFx1.start(1,0);
               if (this.parent._id) this.myFx2.start(this.offsetWidth,0);
               else this.myFx2.start(this.offsetHeight,0);
            } else {
               this.setStyle('left', 'auto');
               //this.myFx1.stop();
               this.myFx2.stop();
               //this.myFx1.start(0,1);
               if (this.parent._id) this.myFx2.start(0,this.mw);
               else this.myFx2.start(0,this.mh);
            }
         },

          init: function() {
            this.mw = this.clientWidth;
            this.mh = this.clientHeight;
            //this.myFx1 = new Fx.Style(this, 'opacity');
            //this.myFx1.set(0);
            if (this.parent._id)
                  {
                this.myFx2 = new Fx.Style(this, 'width', {transition: Fx.Transitions.Quart.easeOut}, {duration: 300});
                this.myFx2.set(0);
                  }else{
                this.myFx2 = new Fx.Style(this, 'height', {transition: Fx.Transitions.Quart.easeOut}, {duration: 300});
                this.myFx2.set(0);
                 }
            this.setStyle('left', '-999em');
            animComp = function(){
               if (this.status == 'hide')
               {
                  this.setStyle('left', '-999em');
                  this.hidding = 0;
               }
               this.setStyle('overflow', '');
            }
            this.myFx2.addEvent ('onComplete', animComp.bind(this));
         },

         hideAll: function() {
            for(var i=0;i<subnav.length; i++) {
               if (!this.isChild(subnav[i]))
               {
                  subnav[i].hide(0);
               }
            }
         },

         isChild: function(_obj) {
            obj = this;
            while (obj.parent)
            {
               if (obj._id == _obj._id)
               {
                  //alert(_obj._id);
                  return true;
               }
               obj = obj.parent;
            }
            return false;
         }


      });


      var DropdownMenu = new Class({
         initialize: function(element)
         {
            //$(element).mh = 0;
            $A($(element).childNodes).each(function(el)
            {
               if(el.nodeName.toLowerCase() == 'li')
               {
                  //if($(element)._id) $(element).mh += 30;
                  $A($(el).childNodes).each(function(el2)
                  {
                     if(el2.nodeName.toLowerCase() == 'ul')
                     {
                        $(el2)._id = subnav.length+1;
                        $(el2).parent = $(element);
                        subnav.push ($(el2));
                        el2.init();
                        el.addEvent('mouseover', function()
                        {
                           el.setActive();
                           el2.show(0);
                           return false;
                        });

                        el.addEvent('mouseout', function()
                        {
                           el.setDeactive();
                           el2.hide(20);
                        });
                        new DropdownMenu(el2);
                        el.hasSub = 1;
                     }
                  });
                  if (!el.hasSub)
                  {
                     el.addEvent('mouseover', function()
                     {
                        el.setActive();
                        return false;
                     });

                     el.addEvent('mouseout', function()
                     {
                        el.setDeactive();
                     });
                  }
               }
            });
            return this;
         }
      });

      Window.onDomReady(function() {new DropdownMenu($E('#topmenu ul.menu-nav'))});

   }else {

      sfHover = function() {
      var sfEls = document.getElementById("#topmenu ul.menu-nav").getElementsByTagName("li");
      for (var i=0; i<sfEls.length; ++i) {
         sfEls[i].onmouseover=function() {
            this.className+="sfhover";
         }
         sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp("sfhover\\b"), "");
         }
      }
   }
   if (window.attachEvent) window.attachEvent("onload", sfHover);
}
цитата
08/03/13 в 23:53
 Дартаньян
andreich: муутулз, чувак пусть напишут на jquery.
цитата
09/03/13 в 00:36
 andreich
Дартаньян: да этоготовое решение, а не писанное
тоесть всетаки дело в mootools ?
цитата
09/03/13 в 00:58
 Дартаньян
andreich: дай ссылку на то где это юзают, может у тебя там Jquery выше объявлен вот и конфликт.
цитата
09/03/13 в 01:05
 andreich
http://www.fluffy-favourite.ru
там вообще странная ситуация
хостился себе на php 4.x.x, но потом пришлось перехать на PHP 5.3.x
вначале эта менюшка вообще пропала, тупо не грузилась (точнее не грузились вообще никакие меню)
Joomla была 1.5.17 сегодня решил поковырять - апгрейдил joomla до 1.5.26, как я понял там и mootools апгейдился с верси 1.х до 2.х
меню появились, верхнее такое вот кривое
я просто не силен во всех этих фрэймворках, да и почасти программирования вообще
цитата
09/03/13 в 01:10
 Дартаньян
andreich: у тебя топ меню не пашет, там просто пустое место.
цитата
09/03/13 в 01:13
 andreich
странная хуйня только что работало

ебабокнулось icon_sad.gif

ладно завтра убду ковырять спать пора
цитата
09/03/13 в 01:47
 Дартаньян
andreich: php логи кидай сюда.


Эта страница в полной версии