Ergebnis 1 bis 5 von 5

Thema: Dropdownmenü

  1. #1
    Rockdancer ist offline Grünschnabel
    registriert
    12-04-2011
    Beiträge
    3

    Dropdownmenü

    Hallo ihr bin neu hier, hab zu meinem Problem aber nichts gefunden...

    Hab folgendes Skript bei mir für mein Menü integriert. www.pettenhofen.de
    Mein Problem besteht darin, dass ich gerne hätte, dass sich die Untermenüs schließen, wenn ich auf irgendeinen Hauptmenüpumkt klicke und nicht nur wenn ich wieder auf den zugehörigen Hauptmenüpunkt klicke.

    Folgendes Skript verwende ich. Ist auch irgendwo aus dem Netz und leicht abgeändert...
    Code:
    var toggleMenu = {
    	init : function(sContainerClass, sHiddenClass) {
    		if (!document.getElementById || !document.createTextNode) {return;} // Check for DOM support
    		var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);
    		var arrSubMenus, oSubMenu, oLink;
    		for (var i = 0; i < arrMenus.length; i++) {
    			arrSubMenus = arrMenus[i].getElementsByTagName('ul');
    			for (var j = 0; j < arrSubMenus.length; j++) {
    				oSubMenu = arrSubMenus[j];
    				oLink = oSubMenu.parentNode.getElementsByTagName('a')[0];
    				oLink.onclick = function(){toggleMenu.toggle(this.parentNode.getElementsByTagName('ul')[0], sHiddenClass); return false;}
    				this.toggle(oSubMenu, sHiddenClass);
    			}
    		}
    	},
    	toggle : function(el, sHiddenClass) {
    		var oRegExp = new RegExp("(^|\\s)" + sHiddenClass + "(\\s|$)");
    		el.className = (oRegExp.test(el.className)) ? el.className.replace(oRegExp, '') : el.className + ' ' + sHiddenClass; // Add or remove the class name that hides the element
    	},
    
    	addEvent : function(obj, type, fn) {
    		if (obj.addEventListener)
    			obj.addEventListener(type, fn, false);
    		else if (obj.attachEvent) {
    			obj["e"+type+fn] = fn;
    			obj[type+fn] = function() {obj["e"+type+fn](window.event);}
    			obj.attachEvent("on"+type, obj[type+fn]);
    		}
    	},
    
    	getElementsByClassName : function(oElm, strTagName, strClassName){
    	    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    	    var arrReturnElements = new Array();
    	    strClassName = strClassName.replace(/\-/g, "\\-");
    	    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    	    var oElement;
    	    for(var i=0; i<arrElements.length; i++){
    	        oElement = arrElements[i];      
    	        if(oRegExp.test(oElement.className)){
    	            arrReturnElements.push(oElement);
    	        }   
    	    }
    	    return (arrReturnElements)
    	}
    };
    toggleMenu.addEvent(window, 'load', function(){toggleMenu.init('menu','hidden');});
    Danke für Eure Hilfe!
    Geändert von kkapsner (12-04-2011 um 23:46 Uhr) Grund: CODE-TAGS!

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.751

    AW: Dropdownmenü

    Das Skript ist irgendwie seltsam... nichtsdestotrotz: du musst dir irgendwo speichern, welches Element als letztes geöffnet wurde und dieses dann schließen, wenn ein anderes geöffnet werden soll.

  3. #3
    Rockdancer ist offline Grünschnabel
    registriert
    12-04-2011
    Beiträge
    3

    AW: Dropdownmenü

    Hm, das hab ich mir auch gedacht, als ich mir das jetzt mal wieder angeschaut hab....
    Kennt vielleicht jemand eine "anschaulicher" programmierte Variante meiner meiner benutzten Dropdown Version?

    Hab noch so gut wie nichts mit Java Skript gemacht und seh nur Banhof bei dem Code im Moment

    Danke übrigens für die schnelle Antwort!

  4. #4
    Rockdancer ist offline Grünschnabel
    registriert
    12-04-2011
    Beiträge
    3

    AW: Dropdownmenü

    Im Endeffekt suche ich genau das hier:
    http://www.cssplay.co.uk/menus/csspl...certina.html#x

    Und an das Menü komme ich jetzt wie? Ich muss da eine "Spende" machen?
    Sorry, falls ich mich grad einfach nur dumm anstelle....

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.751

    AW: Dropdownmenü

    Unter "Term and conditions" steht genau, was du machen musst.

    Code:
    	init : function(sContainerClass, sHiddenClass) {
    		if (!document.getElementById || !document.createTextNode) {return;} // Check for DOM support
    		var arrMenus = this.getElementsByClassName(document, 'ul', sContainerClass);
    		var arrSubMenus, oSubMenu, oLink;
    		var lastActive = false;
    		for (var i = 0; i < arrMenus.length; i++) {
    			arrSubMenus = arrMenus[i].getElementsByTagName('ul');
    			for (var j = 0; j < arrSubMenus.length; j++) {
    				oSubMenu = arrSubMenus[j];
    				oLink = oSubMenu.parentNode.getElementsByTagName('a')[0];
    				oLink.onclick = function(){
    					if (lastActive != this){
    						if (lastActive){
    							lastActive.onclick();
    						}
    						lastActive = this;
    					}
    					else {
    						lastActive = false;
    					}
    					toggleMenu.toggle(this.parentNode.getElementsByTagName('ul')[0], sHiddenClass); return false;
    				}
    				this.toggle(oSubMenu, sHiddenClass);
    			}
    		}
    	},
    - ungetestet.

Ähnliche Themen

  1. dropdownmenü
    Von grace29 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 27-08-2008, 18:16
  2. Dropdownmenü gestalten
    Von Tom99 im Forum CSS und (X)HTML
    Antworten: 1
    Letzter Beitrag: 10-07-2006, 14:18
  3. Dropdownmenü ..
    Von Strichmaxal im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 15-05-2003, 16:04
  4. Dropdownmenü
    Von Phili im Forum Smalltalk
    Antworten: 3
    Letzter Beitrag: 13-02-2001, 19:26
  5. Dropdownmenü mit Mediaplayereinbindung
    Von wolfgango im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 06-10-2000, 22:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •