[js]suckerfish dropdown werkt niet door stuk javascript

Pagina: 1
Acties:

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Topicstarter
Ik wist zo snel geen correcte en korte titel te bedenken, maar dit omschrijft wel het probleem. Ik heb de navigatie op mijn site gemaakt volgens het artikel van A list Apart. Deze hide de divs die de content bevatten en unhide ze als je op de betreffende menu link klikt. Nu probeerde ik dit zelfde menu ook een suckerfish dropdown te maken. Daarvoor heb je om het in IE werkend te krijgen een stukje Javascript nodig, wat ik in dit geval boven het stukje javascript voor het hiden en unhiden van divs heb gezet. Ter verduidelijking:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script language="JavaScript" 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>

Dit stuk code, met daaronder de code voor het hiden en unhiden van divs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<script language="JavaScript" type="text/javascript">
window.onload = new function() {
    for ( a in document.links )
        document.links[a].hidefocus = "true"
}
</script>
<script language="JavaScript" type="text/javascript">
  function hideDivs(exempt)
  {
    if (!document.getElementsByTagName) {
      return null;
    }
    if (!exempt) exempt = "";
    var divs =
      document.getElementsByTagName("div");
    for(var i=0; i < divs.length; i++)
    {
      var div = divs[i];
      var id = div.id;
      if ((id != "header") &&
          (id != "footer") &&
          (id != exempt))
      {
        div.style.display = "none";
      }
    }
  }

  function fixLinks()
  {
    if (!document.getElementsByTagName) {
      return null;
    }
    var anchors =
      document.getElementsByTagName("a");
    for(var i=0; i < anchors.length; i++)
    {
      var a = anchors[i];
      var href = a.href;
      if ((href.indexOf("#") != -1) &&
          (href.indexOf("header") == -1))
      {
        var index = href.indexOf("#") + 1;
        href = "javascript:show('" +
          href.substring(index) + "');";
        a.setAttribute("href",href);
      }
    }
  }
  
  function show(what)
  {
    if (!document.getElementById) {
      return null;
    }
    showWhat =
      document.getElementById(what);
    showWhat.style.display = "block";
    hideDivs(what);
  }
  
  window.onload = function()
  {
    hideDivs("intro");
    fixLinks();
  }
</script>


Op de een of andere manier werkt het javascript van de dropdown NIET in IE als die andere scriptjes er onder staan. Als ik ze weg haal doet hij het wel, maar doet de rest van de pagina niet meer wat het hoort te doen. Link naar testadres: http://home.planet.nl/~knuls014/test/test.html

Ik heb btw de search gebruikt maar kon er niets ver vinden, wat overigens ook aan mij kan liggen.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Kan je wel 2 keer een window.onload definieren (zonder de eerste te overschrijven) :? ;)

edit:
↓ Ik dacht dat je ziek was ofzo :P

[ Voor 23% gewijzigd door BtM909 op 24-10-2004 21:38 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Je overschrijft de window.onload in je laatste functie, daardoor wordt de startList() functie niet aangeroepen.

edit:
Eeeeej , altijd eerst mij laten reageren

[ Voor 20% gewijzigd door André op 24-10-2004 21:36 ]


  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Topicstarter
edit:

Maar waarom doet hij het in Firefox dan wel? Hm, hoe kan ik die laatste op een andere manier defineren? Kan dat gewoon door hem in de body tag in een onload te schoppen?

[ Voor 90% gewijzigd door Rowanov op 24-10-2004 21:39 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Rowanov schreef op 24 oktober 2004 @ 21:36:
edit:

Maar waarom doet hij het in Firefox dan wel? Hm, hoe kan ik die laatste op een andere manier defineren? Kan dat gewoon door hem in de body tag in een onload te schoppen?
Firefox werkt met CSS only, IE is er JS bij nodig :)

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Topicstarter
Ik spoel mijn mond met zeep :+ Goed, dus alles tussen 2 script tags zetten en de onload van de eerste functie aan die van de tweede toevoegen neem ik aan?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Ja, zo dus:
code:
1
2
3
4
5
6
window.onload = function()
{
  hideDivs("intro");
  fixLinks();
  startList();
}


edit:
GMTA :P

[ Voor 21% gewijzigd door André op 24-10-2004 21:52 ]


  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

Topicstarter
Zo heb ik het opgelost dankzij BtM909 en André (in willekeurige volgorde ;) )
De bovenste functie anders gecreerd en de window.onload ziet er nu zo uit:
code:
1
2
3
4
5
6
  window.onload = function()
  {
    hideDivs("intro");
    fixLinks();
    startList();
  }


edit:

:+

[ Voor 7% gewijzigd door Rowanov op 24-10-2004 21:52 ]

Pagina: 1