[Javascript] Omgekeerde SlideDown

Pagina: 1
Acties:
  • 181 views

Acties:
  • 0 Henk 'm!

  • Ad Hox
  • Registratie: Maart 2003
  • Laatst online: 17-09 19:23
Ik heb op een website voor mijn klant een menu waarvan een item naar beneden 'slided' wanneer er op geklikt werd, waarna er meerdere menu items getoond werden waarop doorgeklikt kan worden.

Dit deed ik d.m.v.:
<a href="javascript:void(0)" onclick=doSlide('demodiv');">Hoofditem</a>

Vervolgens sliden er drie menu items naar beneden die allen naar een eigen pagina verwijzen. Ging perfect.

Nu wil ik dat er aan het item 'Hoofditem' ook een link hangt. Ik doe:
<a href="index.php">Hoofditem</a>

En in de body:
<body onload="doSlide('demodiv');">

Het idee is dat er een nieuwe pagina opent (index.php) als er op Hoofditem wordt geklikt, waarna dan het menu alsnog uitslided met de drie subitems (dus achteraf, en niet meteen zoals op de 1e manier beschreven).

Wat gebeurt er nu: het menu slide juist naar boven, in plaats van naar beneden. ZIe ook de link onderaan.

Hieronder de code van de JS:

function doSlide(id){
timeToSlide = 60; // in milliseconds
obj = document.getElementById(id);
if(obj.style.display == "none"){ // if it's allready hidden we slide it down
obj.style.visibility = "visible";
obj.style.display = "block";
height = obj.offsetHeight;
obj.style.height="10px";
obj.style.visibility = "visible";
slideDown(obj,0,height,Math.ceil(height/timeToSlide));
} else {
slideUp(obj,Math.ceil(obj.offsetHeight/timeToSlide),obj.offsetHeight);
}
}

function slideDown(obj,offset,full,px){
if(offset < full){
obj.style.height = offset+"px";
offset=offset+px;
setTimeout((function(){slideDown(obj,offset,full,px);}),1);
} else {
obj.style.height = full+"px"; //If the data inside is updated on runtime you can use auto instead...
}
}

function slideUp(obj,px,full){
if((obj.offsetHeight-px) > 0){
obj.style.height = obj.offsetHeight-px+"px";
setTimeout((function(){slideUp(obj,px,full);}),1);
} else {
obj.style.height=full+"px"; // we reset the height if we were to slide it back down
obj.style.display = 'none';
}
}

Hoe los ik dit op?

Voorbeeld spreekt voor zich: Link.

Menu klapt in bij het openen terwijl dit juist moet uitklappen..(What we do)

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:59

TeeDee

CQB 241

De display:none; er nog bij zetten?
HTML:
1
<div id="demodiv" style="border:1px solid black;width:150px;height:150px;display:none;overflow:hidden;">

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voor support op 3rd party code moet je bij die derde partij zijn ;) En als je dan toch code 'leent' is 't wel handig even te kijken wat 't nou precies doet (en desnoods met debuggen uit te vogelen waar je probleem zit: Debuggen: Hoe doe ik dat?).

En als je code post, gebruik dan code tags a.u.b. en plaats je topic in 't juiste forum: Waar hoort mijn topic?

[ Voor 52% gewijzigd door RobIII op 03-11-2009 23:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.