Supportnet / Forum / Webseiten/HTML
Horizontales Klappmenu
Frage
Hallo,
ich habe fuer meine Homepage:
http://www.unterpfaffenhofen.de/index2.php#
ein horizontales Klappmenü bei dem Link "Veranstaltungen" mit Hilfe von Tutorials und Beispielseiten gebastelt.
Es funktioniert auch wunderbar im Firefox nur im IE 6.0 passiert einfach gar nichts.
In dem CSS Code ist ja auch ein sog. IE -Fix, aber scheinbar bringt dieser nichts.
Hier mal die einzelnen Codeabschnitte:
[b]JAVA[/b]
[code]<script type="text/javascript">
// JavaScript Document
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
window.onload=startList;
</script>[/code]
[b]CSS[/b]
[code]<style type="text/css">
<!--
body {
background-color: #dae7fe;
background-image: url(borderline.gif);
}
ul {
margin: 0;
padding: 0;
list-style: none;
width: 181px; /* Width of Menu Items */
border-bottom: 0px;
}
ul li {
position: relative;
}
li ul {
position: absolute;
left: 181px; /* Set 1px less than menu width */
top: 0;
display: none;
}
/* Styles for Menu Items */
ul li a {
border-left:0px; border-right:0px; border-top:0px; display: block;
border-bottom: 0px none;
}
/* Fix IE. Hide from IE Mac \*/
* html ul li { float: left; height: 1%; }
* html ul li a { height: 1%; }
/* End */
ul li a:hover { color: #E2144A; background: #f9f9f9; } /* Hover Styles */
li ul li a {
border-left:1px solid #ccc; border-right:1px solid #ccc; border-top:1px solid #ccc; display: block;
text-decoration:none;
font-weight:bold;
font-family:Arial;
font-color:black;
color: #777;
background: #A1C2FB; /* IE6 Bug */
padding: 5px;
border-bottom: 0px none;
} /* Sub Menu Styles */
li:hover ul, li.over ul { display: block; } /* The magic */
-->
</style>[/code]
[b]HTML:[/b]
[code] <td>
<li><a href="#"><img src="Bilder/index2_10.gif" alt="" width="181" height="42" border="0"></a><ul>
<li><a href="#">Seefest</a></li>
<li><a href="#">Maibaum</a></li>
<li><a href="#">Vorsilfesterparty</a></li>
</ul>
</li></td>[/code]
Hoffe jemand kennt sich damit aus und kann mir etwas vorschlagen.
Oder ist dieses gar nicht möglich in IE 6.0?
Danke aufjedenfall schonmal
MFG
Mauki
Antwort 1 von className
der IE mag es meines Wissens nicht, wenn die Liste der Klassen in einem Element mit einem Leerzeichen beginnt (was bei +=" klasse" passieren kann).
übrigens lässt sich deine JavaScript-Funktion deutlich abkürzen:
Wozu hast du übrigens nach document.all gefragt? Das benutzt dein Script doch gar nicht (und wenn wäre es töricht).
Es ist übrigens sinnvoller, neue Variablen mit var einzuführen, ohne das würdest du zum Beispiel in der For-Schleife den Indexzähler j nicht nur hier, sondern auch in allen anderen Funktionen und sonstwo im JavaScript ändern. Globale Variablen sind immer gefährlich!
übrigens lässt sich deine JavaScript-Funktion deutlich abkürzen:
startList = function() {
if (document.getElementById) {
var navRoot = document.getElementById("nav");
var linodes = navRoot.getElementsByTagName("li");
for (var j=0; j<linodes.length; j++) {
linodes[j].onmouseover=function() {
this.className+=" over";
}
linodes[j].onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}Wozu hast du übrigens nach document.all gefragt? Das benutzt dein Script doch gar nicht (und wenn wäre es töricht).
Es ist übrigens sinnvoller, neue Variablen mit var einzuführen, ohne das würdest du zum Beispiel in der For-Schleife den Indexzähler j nicht nur hier, sondern auch in allen anderen Funktionen und sonstwo im JavaScript ändern. Globale Variablen sind immer gefährlich!
Antwort 2 von mauki
Danke,
habe deine Tips umgesetzt. Wie gesagt, ich habe das durch Tutorials usw. umgesetzt und habe selber wenig Ahnung von Javascript.
Leider funktioniert es in IE 6.0 immer noch nicht.
Meine Javacode sieht nun so aus:
habe deine Tips umgesetzt. Wie gesagt, ich habe das durch Tutorials usw. umgesetzt und habe selber wenig Ahnung von Javascript.
Leider funktioniert es in IE 6.0 immer noch nicht.
Meine Javacode sieht nun so aus:
startList = function() {
if (document.getElementById) {
var navRoot = document.getElementById("nav");
var linodes = navRoot.getElementsByTagName("li");
for (var j=0; j<linodes.length; j++) {
linodes[j].onmouseover=function() {
this.className+="over";
}
linodes[j].onmouseout=function() {
this.className=this.className.replace("over", "");
}
}
}
}Antwort 3 von className
die eigenwillige Syntax fällt mir erst jetzt auf:
startList = function()
probier mal das übliche:
function startList ()
Ob der IE6 nämlich eine Funktion als globale Variable akzeptiert entzieht sich meiner Kenntnis.
PS: mit deinen Änderungen kannst du
this.className=this.className.replace("over", "");
kürzer schreiben als
this.className="";
startList = function()
probier mal das übliche:
function startList ()
Ob der IE6 nämlich eine Funktion als globale Variable akzeptiert entzieht sich meiner Kenntnis.
PS: mit deinen Änderungen kannst du
this.className=this.className.replace("over", "");
kürzer schreiben als
this.className="";
Antwort 4 von mauki
Geht leider mit den Änderungen immer noch nicht :(
MFG
MFG
Antwort 5 von className
lies bitte nochmals genau Antwort 3 und vergleiche das mit deinem Code!
Tipp: der Firefox hat eine prima Fehlerkonsole!
noch'n Tipp: font-color gibt es nicht im CSS
Tipp: der Firefox hat eine prima Fehlerkonsole!
noch'n Tipp: font-color gibt es nicht im CSS
Antwort 6 von Mauki
Habe mich verlesen gehabt ich dummerchen.
Jetzt spuckt die Fehler-Konsole nichts mehr aus und ich habe denke ich alle Änderung die du vorgeschlagen hast umgesetzt, aber IE 6.0 nimmt sie leider immer noch nicht an :(
Kann es sein, dass der IE 6 einfach den Teil von CSS nicht interpretieren kann?:
bzw. einige andere CSS Befehle.
Danke aufjedenfall fuer die große Hilfe schonmal.
Jetzt spuckt die Fehler-Konsole nichts mehr aus und ich habe denke ich alle Änderung die du vorgeschlagen hast umgesetzt, aber IE 6.0 nimmt sie leider immer noch nicht an :(
Kann es sein, dass der IE 6 einfach den Teil von CSS nicht interpretieren kann?:
/* Fix IE. Hide from IE Mac \*/
* html ul li { float: left; height: 1%; }
* html ul li a { height: 1%; }
/* End */bzw. einige andere CSS Befehle.
Danke aufjedenfall fuer die große Hilfe schonmal.

