Oprettet tir. d. 13. marts 2007 kl. 09:25:49

torpmikkelsen
torpmikkelsen (15.668 point. Point ude: 0)

getElementById("nav") duer ikke

Jeg sidder og roder lidt med denne dropdown http://www.htmldog.com/ (...)

Jeg laver siden i joomla og har nu fået den til at udskrive en menu som minder meget om listeopbygningen på den anden.
Mit problem er bare at joomla ikke skriver id="nav" men class="nav", dvs. at menuen ikke virker i IE da javaScript delen jo skriver getElementById("nav").

Mit første forsøg var bare at skrive getElementByClass("nav"), men overraskende nok virkede det ikke...

Er der nogen der kan skrive javadelen som, så den virker med class istedet for id.

På forhånd mange TAK!

Skrevet tir. d. 13. marts 2007 kl. 09:27:59| #1

torpmikkelsen
torpmikkelsen (15.668 point)
Den oprindelige javascript ser sådan ud:
<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", "");
  }
  }
  }
}
}
window.onload=startList;
//-->
</script>

Skrevet tir. d. 13. marts 2007 kl. 09:37:35| #2

class og id er to helt forskellige ting på et element. Eller har jeg misforstået?

Skrevet tir. d. 13. marts 2007 kl. 09:42:53| #3

torpmikkelsen
torpmikkelsen (15.668 point)
Jooo... det er det jo. Men det at Joomla skriver class istedet for id er ikke noget problem rent CSS mæssigt, så jeg kan sagtent få menuen til at virke i FireFox.

IE skal bare også lige have lidt JavaScript for at fatte det :D

Skrevet tir. d. 13. marts 2007 kl. 10:44:30| #4

roenving
roenving (328.349 point)
For nogle år siden lavede jeg en generisk getElementsByClassName, den finder jeg lige frem !-)

Skrevet tir. d. 13. marts 2007 kl. 10:49:04| #5

roenving
roenving (328.349 point)
<script language="javascript" type="text/javascript">
// Kaldes med getElementsByClassName("class","tagName","rootElement"); -- kun "class" er obligatorisk
function getElementsByClassName(c,t,e){
  switch(getElementsByClassName.arguments.length){
    case 0:
      return null;
    case 1:
      t = '*';
      e = document;
      break;
    case 2:
      e = document;
  }
  var r = [],tags = e.getElementsByTagName(t);
  for(i=0;tags.length>i;i++){
    if(tags[i].className.indexOf(c) > -1)r[r.length] = tags[i];
  }
  return (r.length>0)?r:null;
}
</script>

-- og så udskifter du:

navRoot = document.getElementById("nav");

Med:

navRoot = getElementsByClassName("nav")[0];

Skrevet tir. d. 13. marts 2007 kl. 10:57:54| #6

torpmikkelsen
torpmikkelsen (15.668 point)
Perfekt!

Tak for det. Smid et svar så får du point

Skrevet tir. d. 13. marts 2007 kl. 11:02:10| #7

roenving
roenving (328.349 point)
Velbekomme '-)

Skrevet tir. d. 13. marts 2007 kl. 11:15:10| #8

roenving
roenving (328.349 point)
-- og tak for point ;~}

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Hjælp til validering

Oprettet den 26. maj 2012 kl. 14.01
Stefan1 giver 20 point for svar | Giv et svar »

Javascript sliders?

Oprettet den 24. maj 2012 kl. 11.29
NizeGuy giver 15 point for svar | Giv et svar »

Validere navn i form

Oprettet den 22. maj 2012 kl. 15.13
13thsky giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger