2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
469
469
EMPFEHLEN
-
Hallo miteinander,
Ich arbeite noch nicht sehr lange vertieft mit Javascript, aber hoffe mit Hilfe mehr von diesem Thema zu verstehen. Viele Dokumentationen zu dem Thema schienen mich nicht zum gewünschten Ergebnis zu bringen, also glaube ich das ich irgendwo einen Verständnisfehler mache.
Ich möchte ein einfaches Dropdown-Menü erstellen, und habe mit dem folgenden Script gearbeitet: http://javascript-array.com/scripts/...rop_down_menu/
Das "Sample" zeigt, wie es am Ende aussieht. Selbst versuche ich, die "Hauptnavigation" über der aktivierten Subnavigation zu verfärben:
Also wenn ich die Maus auf der geöffneten Ebene/Subnavigation bewege, soll der jeweilige Überpunkt weiterhin den Hover-effekt (Verfärbung) beibehalten anstatt seine Originalfarbe wieder anzunehmen.
Hier ist mein HTML Code: (Habe meine eigenen PHP-Ergänzungen rausgenommen)
und hier das Javascript: (mit NEUNEU kommentierten Zeilen sind von mir selbst eingefügt worden)HTML-Code:<ul id="menu"> <li id="test1"><a href="home/" onmouseover="mopen('m1')" onmouseout="mclosetime()">Home</a> <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()"> <a href="home/news1/">News1</a> <a href="home/news2/">News2</a> <a href="home/news3/">News3</a> </div> </li> <li id="test2"><a href="lorem-ipsum/subnav1/" onmouseover="mopen('m2')" onmouseout="mclosetime()">Lorem Ipsum</a> <div id="m2" onmouseover="mcancelclosetime()" onmouseout="mclosetime()"> <a href="lorem-ipsum/subnav1/">Subnav1</a> <a href="lorem-ipsum/subnav2/">Subnav2</a> </div> </li> <li id="test3"><a class="test3" href="auditore/subnav1/" onmouseover="mopen('m3')" onmouseout="mclosetime()">Auditore</a> <div id="m3" onmouseover="mcancelclosetime()" onmouseout="mclosetime()"> <a href="auditore/subnav1/">Subnav1</a> <a href="auditore/subnav2/">Subnav2</a> <a href="auditore/subnav3/">Subnav3</a> </div> </li> <li id="test4"><a class="test4" href="kontakt/formular/" onmouseover="mopen('m4')" onmouseout="mclosetime()">Kontakt</a> <div id="m4" onmouseover="mcancelclosetime()" onmouseout="mclosetime()"> <a href="kontakt/formular/">Formular</a> <a href="kontakt/adresse/">Adresse</a> </div> </li> </ul> <div style="clear:both"></div>
Als Test versuche ich, den ersten Menüpunkt rot (dessen Hintergrundfarbe) anzuzeigen, sobald seine Subnavigation aufgeklappt wird (in meinem Fall "Home", für den Anfang).HTML-Code:// Copyright 2006-2007 javascript-array.com var timeout = 500; var closetimer = 0; var ddmenuitem = 0; var test1 = document.getElementById("test1"); <!-- NEUNEU // Versteckte Ebene anzeigen function mopen(id) { // Timer zum Schliessen der Ebene abbrechen mcancelclosetime(); // alte Ebene schliessen if(ddmenuitem) ddmenuitem.style.visibility = 'hidden'; // neue Ebene anzeigen ddmenuitem = document.getElementById(id); ddmenuitem.style.visibility = 'visible'; test1.style.setAttribute("backgroundColor", "red", false); <!-- NEUNEU } // Angezeigte Ebene schliessen function mclose() { if(ddmenuitem) ddmenuitem.style.visibility = 'hidden'; } // Timer zum Schliessen starten function mclosetime() { closetimer = window.setTimeout(mclose, timeout); } // Timer zum Schliessen der Ebene abbrechen function mcancelclosetime() { if(closetimer) { window.clearTimeout(closetimer); closetimer = null; } } // Ebene beim "Rausklicken" abbrechen document.onclick = mclose;
Die Fehlerkonsole von Firebug (das Code-Analyse Plugin für Firefox) meint, wenn ich mit der Maus auf "Home" bin:
Aber test1 ist doch eigentlich vorhanden? Habe ich irgendwo etwas falsch gemacht, sodass das Script die ID (bzw. dessen Inhalt) nicht als solchen erkennt?HTML-Code:test1 is null - test1.style.setAttribute("backgroundColor", "red", false); <!-- NEUNEU
Vielen Dank im Voraus für jegliche Hilfe!
-
Anstatt dir jetzt bei deinem konkreten JavaScript Problem zu helfen, will ich dir was anderes dazu sagen.
-Ein solches Menü geht auch ohne JavaScript
-Das verwendete Markup ist weder valide noch semantisch korrekt
http://www.cssplay.co.uk/menus/basic-dropdown.html
Dein Problem könnte daran liegen, dass du den JavaScript Code vor dem Menü eingebunden hast. Zum Zeitpunkt, wo das Skript ausgeführt wird, existiert "test1" noch nicht.
-
Vielen Dank für die Antwort!
Ja, dieses Menü ist wirklich besser im CSS zu lösen, und das werde ich jetzt auch tun (danke nochmal deswegen) allerdings würde ich trotzdem gerne wissen, wieso die Variable so nicht funktioniert um es im Zukunft zu vermeiden.
Meinst du das Markup des Vorlage-Skriptes oder mein eigenes?
Das Skript wird wirklich vor dem Menü aufgerufen, allerdings funktionierte es als Menü. Wenn ich es dennoch danach einbinde, bekomme ich folgende Meldung bei Aktivierung des Hauptmenüpunktes:
HTML-Code:test1.style.setAttribute is not a function - test1.style.setAttribute("backgroundColor", "red", false); <!-- NEUNEU
-
"style" hat keine Methode "setAttribute", weil style selbst ist doch das Attribut!
Code javascript:1 2 3 4 5 6
test1.style.backgroundColor = 'red'; //oder (NICHT sinnvoll!) test1.setAttribute('style', 'background-color:red;');
-
Habe ich wohl eine veraltete/falsche Dokumentation gelesen... Grosses Dankeschön für den Hinweis!
Ähnliche Themen
-
CSS Navigation ohne Javascript möglich?
Von julieann im Forum CSSAntworten: 5Letzter Beitrag: 26.06.07, 23:46 -
Javascript Navigation
Von fruity im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 24.08.05, 14:10 -
Navigation Javascript
Von DjMG im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 24.01.05, 01:48 -
Navigation über Javascript?
Von Master Flexi im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 25.03.04, 19:21 -
Navigation mittels JavaScript (DHTML)
Von Prinztom im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 07.11.02, 09:22





Zitieren

Login





