Avatar billede md_craig Nybegynder
11. april 2004 - 23:12 Der er 12 kommentarer og
1 løsning

Dropdown menu, mouse out problem.

På siden http://212.242.200.95/view.aspx har jeg en lille dropdown menu, fungerende med CSS og tables...

Kør musen over Udstyr...

det der sker er at der ligger en skjult tabel (dropDownMenuen) som er placeret ud fra cellen hvor i ustyr er...

Som det kan ses er det muligt at tabellen der popper frem er bredere end selve hovedmenu punktet...

derfor er hovedlinket IKKE en del af den tabel der kommer frem... da det naturligvis vil gå hen og overlappe cellen ved siden af... og det er jo ikke meningen...

det betyde dog så at når jeg køre musen ned, så sker det af og til at menuen forsvinder, efter som mouseout'en i hoved menuen bliver effektiv... men der skulle mouseover efekten i selve menuen jo gerne nå at tage over... men det gør den ikke altid...

Nogle gode forslag på en løsning på det ???
Avatar billede roenving Novice
11. april 2004 - 23:20 #1
Er det ikke fordi du mangler en timeout, så den næste mouseover kan nå at overtage før den gamle udføres ?-)
Avatar billede md_craig Nybegynder
11. april 2004 - 23:33 #2
En mulighed...
er timeout en forud defineret funktion i JS ??? for kan ikke finde noget om den lige sådan... bare timeout(30) eller timeout = 30 eller hvordan???

skal vel bare smide den ind lige før i min Mouseout
Avatar billede roenving Novice
11. april 2004 - 23:38 #3
Hvis din mouseout f.eks. hedder: hide() hedder en timeout:

setTimeout('hide()',50);//50 millisekunder

-- og det virker ikke i Mozilla og en masse andre browsere, når du forudsætter document.all !-)
Avatar billede md_craig Nybegynder
12. april 2004 - 00:30 #4
ok... nu har jeg ikke nogen funktioner til opgaverne, da det bare er at ændre på visibility på et enkelt element... så anså det som lidt spild... Men kan jeg så pakke det ind således:
  setTimeout(Priser.style.visibility='hidden',50) ???
Avatar billede roenving Novice
12. april 2004 - 00:43 #5
Nej !-)

De plinger, jeg angav er meget vigtige ...

Så jeg ville prøve med:

setTimeout('Priser.style.visibility=\'hidden\'',50)

-- men noget helt andet er, at du for at få det til at virke i alle browsere skal gøre det anderledes !-)

Idag er det kun ie4 plus nogle enkelte Opera-versioner, som kun forstår document.all, som er forudsætningen for at skrive det på ovenstående måde, til gengæld er der en hulens masse browsere, som _ikke_ forstår den måde, du har skrevet det på, så jeg ville lave nogle simple funktioner, og hvis du insisterer på, at ie4-brugere skal være med kan de udvides:

<script type="text/javascript">
var dom = (document.getElementById)?true:false;
var ie4 = (document.all)?true:false;

function vis(id){
  if(dom)document.getElementById(id).style.visibility = "visible";
  else if(ie4)document.all[id].style.visibility = "visible";
}
function gem(id){
  if(dom)document.getElementById(id).style.visibility = "hidden";
  else if(ie4)document.all[id].style.visibility = "hidden";
}
</script>

og så dine links:

onmouseover="vis('Priser');"
onmouseout="gem('Priser');"

og

onmouseout="setTimeout('gem(\'Priser\')',50);"
Avatar billede md_craig Nybegynder
12. april 2004 - 00:44 #6
OK... nu fungere det jo så sådan at den bliver aktiveret 500 millisekunder efter man er gået ud... dette resultere så bare i at man kan stå i menuen og lige så fint se den lukker... ikke så heldigt igen...
Avatar billede md_craig Nybegynder
12. april 2004 - 00:51 #7
Ok.. jamen det er da i det mindste altid godt af vide...
Men stadig så lukker den nu bare uanset hvad man gør... så skal man jo vel på en måde ind og stoppe den funktion, for det er ikke nok med at mouseover="menuHide('obj');" bliver kørt i det skjulte table... så afvikles Hide funktionen lige efter... og skjulder dermed tabellen... ret nitte sådan set...
Avatar billede md_craig Nybegynder
12. april 2004 - 01:11 #8
Det blev så løst... dog nok ikke på den smukkeste måde...
Men det sjove er at det ser ud til at fungere rigtig godt for menupunktet priser...

Men udstyrs punktet halter noget... ?? :o/
Avatar billede roenving Novice
12. april 2004 - 01:11 #9
Så:

<script type="text/javascript">
var dom = (document.getElementById)?true:false;
var ie4 = (document.all)?true:false;
var hidetimer;

function vis(id){
  if(hidetimer)clearTimeout(hidetimer);
  if(dom)document.getElementById(id).style.visibility = "visible";
  else if(ie4)document.all[id].style.visibility = "visible";
}
function gem(id){
  if(dom)document.getElementById(id).style.visibility = "hidden";
  else if(ie4)document.all[id].style.visibility = "hidden";
}
</script>

og så dine links:

onmouseover="vis('Priser');"
onmouseout="gem('Priser');"

og

onmouseout="hidetimer=setTimeout('gem(\'Priser\')',50);"
Avatar billede md_craig Nybegynder
12. april 2004 - 01:13 #10
Finurlig nok så sker der det at hvis det første menupunkt ikke er fyldt godt ud med tekst... (den man går ned i)... så kan den finde på at lukke hvis man køre ned hvor der ikke er noget tekst...
Dette burde jo ikke ske, da det er på hele tabellen mouse overen er sat på... ???
Avatar billede md_craig Nybegynder
12. april 2004 - 01:19 #11
Den opfører sig i det hele taget lidt mærkeligt omkring menupunktet "lyd" som det er nu... ligsom om at den opfatter det som en Mouseout hvis man bevæger sig uden for de bogstaver der er i lige præsis det fælt... det er ikke galt andre steder...
  Har du nogen god forklaring på dette ??? for det er for det første på tabellen "onMouseover" ligger, og linkene er Display Bloct og 100% i breden...
Avatar billede md_craig Nybegynder
12. april 2004 - 01:21 #12
Det er i det hele taget et problem på det FØRSTE menupunkt... men kun det første... dette kan jeg se er gennerelt for menuen... (det sker altså også på den næste...)
Avatar billede md_craig Nybegynder
25. april 2004 - 11:47 #13
Fik løst problemet i et andet spm ved et tilfælde, ved at smide et Lag omkring... :o/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester