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;
Okee, heb ik getest. In Opera zie ik de submenu's verschijnen. Er gebeurt alleen niets als ik op een submenu klik.
Dat klopt, ben nu de opzet van de site aan het mkaen en pas als die helemaal werkt en ik daar tevreden over ben ga ik de content over zetten naar de nieuwe site...
Dus bijna elke link bestaat nu uit href="#"
Bedankt voor de hulp...ga morgen weer verder...
Okee, hij is in ieder geval aardig cross-browser nu.
Dat script gebruikt wel JS!
Er word wel javascript gebruikt op die pagina, maar het is niet nodig voor dat menu, ze hebben gewoon een probleem van IE opgelost met javascript, wat ook kan met CSS

http://www.codeproject.com/html/purecssmenus.asp

Nou bij deze link word er helemaal geen JS gebruikt ^^
Willem-Jan schreef op 03.01.2006 00:09
Dat komt omdat hij dan 3 keer de functie uit voert, en hij eindigt bij nav3, en dus alleen die laat zien...


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;


Ik denk dat dit wel werkt...


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?
Hij zegt dus dat
navRoot2 = document.getElementById("nav2");
zijn werk niet doet. Dat kan heel goed betekenen dat er geen element is met het id 'nav2'.
Dit sc ript wordt aangeroepen op een pagina door:
<script type="text/javascript" src="java_script.js"></script>
Ik weet dus niet waar IE begint met het tellen van regels.... Want deze aanroep staat op regel 110 van index.php

Bij de weg, nav2 bestaat wel, net als nav en nav3...

Reageren