mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 07:03 Benutzername: Passwort: Auto-Login

Thema: kleines Javascript problem vom 28.09.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> kleines Javascript problem
Autor Nachricht
drZakirNaik
Threadersteller

Dabei seit: 28.09.2008
Ort: -
Alter: 59
Geschlecht: Männlich
Verfasst So 28.09.2008 16:37
Titel

kleines Javascript problem

Antworten mit Zitat Zum Seitenanfang

Hallo,

ich hab ein kleines problem,

ich weis nicht wie ich es hinkriegen soll, dass sich das Menü beim "onmouseout" wieder selber schliest.
(Bsp: Bei Exploration wen man mit der Maus darübergeht öffnet es sich, aber beim Verlassen geschieht nix).

So siehts auf der Webseite aus:
die seite

Hier der Code:

Code:

function SDMenu(id) {
   if (!document.getElementById || !document.getElementsByTagName)
      return false;
   this.menu = document.getElementById(id);
   this.submenus = this.menu.getElementsByTagName("div");
   this.remember = true;
   this.speed = 3;
   this.markCurrent = true;
   this.oneSmOnly = false;
}
SDMenu.prototype.init = function() {
   var mainInstance = this;
   for (var i = 0; i < this.submenus.length; i++)
      this.submenus[i].getElementsByTagName("span")[0].onmouseover = function() {
         mainInstance.toggleMenu(this.parentNode);
      };
      
      
   if (this.markCurrent) {
      var links = this.menu.getElementsByTagName("a");
      for (var i = 0; i < links.length; i++)
         if (links[i].href == document.location.href) {
            links[i].className = "current";
            break;
         }
   }
   if (this.remember) {
      var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)");
      var match = regex.exec(document.cookie);
      if (match) {
         var states = match[1].split("");
         for (var i = 0; i < states.length; i++)
            this.submenus[i].className = (states[i] == 0 ? "collapsed" : "");
      }
   }
};



SDMenu.prototype.toggleMenu = function(submenu) {
   if (submenu.className == "collapsed")
      this.expandMenu(submenu);
   else {
      this.collapseMenu(submenu);
   }
      
};
SDMenu.prototype.expandMenu = function(submenu) {
   var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
   var links = submenu.getElementsByTagName("a");
   for (var i = 0; i < links.length; i++)
      fullHeight += links[i].offsetHeight;
   var moveBy = Math.round(this.speed * links.length);
   
   var mainInstance = this;
   var intId = setInterval(function() {
      var curHeight = submenu.offsetHeight;
      var newHeight = curHeight + moveBy;
      if (newHeight < fullHeight)
         submenu.style.height = newHeight + "px";
      else {
         clearInterval(intId);
         submenu.style.height = "";
         submenu.className = "";
         mainInstance.memorize();
      }
   }, 30);
   this.collapseOthers(submenu);
};
SDMenu.prototype.collapseMenu = function(submenu) {
   var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
   var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
   var mainInstance = this;
   var intId = setInterval(function() {
      var curHeight = submenu.offsetHeight;
      var newHeight = curHeight - moveBy;
      if (newHeight > minHeight)
         submenu.style.height = newHeight + "px";
      else {
         clearInterval(intId);
         submenu.style.height = "";
         submenu.className = "collapsed";
         mainInstance.memorize();
      }
   }, 30);
};
SDMenu.prototype.collapseOthers = function(submenu) {
   if (this.oneSmOnly) {
      for (var i = 0; i < this.submenus.length; i++)
         if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed")
            this.collapseMenu(this.submenus[i]);
   }
};
SDMenu.prototype.expandAll = function() {
   var oldOneSmOnly = this.oneSmOnly;
   this.oneSmOnly = false;
   for (var i = 0; i < this.submenus.length; i++)
      if (this.submenus[i].className == "collapsed")
         this.expandMenu(this.submenus[i]);
   this.oneSmOnly = oldOneSmOnly;
};
SDMenu.prototype.collapseAll = function() {
   for (var i = 0; i < this.submenus.length; i++)
      if (this.submenus[i].className != "collapsed")
         this.collapseMenu(this.submenus[i]);
};
SDMenu.prototype.memorize = function() {
   if (this.remember) {
      var states = new Array();
      for (var i = 0; i < this.submenus.length; i++)
         states.push(this.submenus[i].className == "collapsed" ? 0 : 1);
      var d = new Date();
      d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
      document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";
   }
};



Danke vielmals *Thumbs up!*
  View user's profile Private Nachricht senden
Smooth-Graphics

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst So 28.09.2008 18:51
Titel

Antworten mit Zitat Zum Seitenanfang

Kennst du dich mit Javascript aus? Hast du den Code eigentlich mal gelesen?
Sorry, das ist nicht wirklich schwer. Du hast deine Toggle Funktion ausm Prototype und in deinem Code steht eh schon eine Funktion fürs Mouseover, also kopierste die und gibst der nen Mouseout Event und schreibstse so um, dass es eben wieder togglet *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
 
Ähnliche Themen JavaScript OnMouseOver, kleines Problem
Kleines Problemchen bei Bildlaufleiste mit Javascript
Kleines OpenSource Javascript erweitern (Content-Slide)
Kleines CSS-Problem
[CSS] Kleines CSS-Problem
kleines CSS Problem
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.