Hoi, op mijn site maak ik gebruik van 3 menus (algemeen, user en admin) die afhankelijk van de user en inloggegevens verschijnen. Nu heb ik nav een tutorial over css dropdown menus een dropdown menu gemaakt voor mijn site (eigenlijk dus 3 menus). Dit werkt in firefox erg goed, maar in IE niet, dit is een bekend probleem wat door de TUT opgelost werd met een script. Dit werkt echter bij mij alleen voor het eerst menu.

Ik zoek daarom een oplossing voor mijn 3 menus, de eerst heeft als ID "nav" mee gekregen, hoe herschrijf ik het script voor de andere 2 menus (nav2 en nav3)?

hieronder staat het script:

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;
Sander Spijk schreef op 05.01.2006 21:16
Als ik het script gebruik zoals het hierboven staat, blijft IE een foutmelding geven:

line: 20
Char: 11
Error: Object required
Code: 0
URL: http://dnd.jotaenschede.nl

Weet iemand wat dit is en hoe ik eraf kom?


Je kunt beter even kijken met FireFox en dan de JavaScript console openen.
Het vreemde is dat FF geen foutmeldingen geeft... die heeft dit script ook niet nodig om een dropdownmenu weer te geven....
Sterker nog, het zou in FF niet werken. Die kent geen document.all, dus je test zou fout gaan. Was er niet een post van Daedaluz in dit topic over een CSS menu dat zowel in IE als in FF werkt?
Ik heb het script nu gewoon in de php pagina gezet, de foutcode veranderd dan naar line 35 en die is:

if (node.nodeName=="LI") {

van nav2.

Moet de node misschien ook een andere naam krijgen dan de node in nav 1?
Dat was al ik de source bekeek en telde in FF. In IE kom ik op een andere regel nml:

for (i=0; i<navRoot2.childNodes.length; i++) {

Zou het zo kunnen zijn dat een bepaalde variabele niet dubbel gebruikt mag worden binnen de functie, bijvoorbeeld de "i" of "node" oid?
Jan Koehoorn schreef op 05.01.2006 21:30
Sterker nog, het zou in FF niet werken. Die kent geen document.all, dus je test zou fout gaan. Was er niet een post van Daedaluz in dit topic over een CSS menu dat zowel in IE als in FF werkt?


Ja dat klopt, maar als je eenmaal zo'n menu in je website hebt wil ik het ook graag werkend hebben....
Daarbij is alles nu weer omgooien ook een pleur werk....
Wat is de laatste versie van je code en wat voor foutmelding krijg je nu precies?
<style type="text/css">
<!--
.style1 {
color: #D8B899;
font-weight: bold;
}
-->
</style>
<script type="text/javascript">
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", "");
}
}
}
}

if (document.all&&document.getElementById) {
navRoot2 = document.getElementById("nav2");
for (i=0; i<navRoot2.childNodes.length; i++) {
node = navRoot2.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}

if (document.all&&document.getElementById) {
navRoot3 = document.getElementById("nav3");
for (i=0; i<navRoot3.childNodes.length; i++) {
node = navRoot3.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>
</head>
<body><center>
<table class="bgtabel" width="900" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top">
Mag ik ook de HTML?
Dit is de code en de manier waarop die in het php bestand staat

De foutmelding is:
line: 35
Char: 11
Error: Object required
Code: 0
URL: http://dnd.jotaenschede.nl

Line 35 is volgens IE:
for (i=0; i<navRoot2.childNodes.length; i++) {

Char 11is dus de tweede i

Reageren