Avatar billede klapiolsen Nybegynder
29. marts 2005 - 20:50 Der er 9 kommentarer og
2 løsninger

OnMouseOut trigger ikke når musen føres over hurtigt

Jeg har lavet en menu der består af en række små billeder der skifter vha en funktion der trigges af onmouseover og onmouseout -f.eks:

function kontakt0(){document.getElementById('kontakt').innerHTML = "<img src=\"billeder/kontakt%201.gif\"  OnMouseOver=\"kontakt1()\">";
}

function kontakt1(){document.getElementById('kontakt').innerHTML = "<img src=\"billeder/kontakt%202.gif\"  OnMouseOut=\"kontakt0()\" (her er også en onclick der kalder en kontakt3() -der er en yderligere udbygget innerhtml-funktion med undermenupunkter -hvilket er årsagen til at jeg bruger denne opbygning istedet for en enklere -men denne del virker fint) >";
}

når musen føres over i normalt tempo fungerer alt som det skal, men føres musen hurtigt er det som om kun onmouseover trigges -dvs kontakt1- kaldes, men her når onmouseout -dvs kontakt0 -ikke at blive kaldt.  -hvad kan det skyldes, og hvordan kan det afhjælpes (jeg vil gerne beholde min nuværende konstruktion hvis det er muligt)
Avatar billede baitianlong Nybegynder
29. marts 2005 - 20:58 #1
skal der ikke stå onmouseout i kontakt0 ??
Avatar billede baitianlong Nybegynder
29. marts 2005 - 21:02 #2
nårh nej - glem det :)
Avatar billede baitianlong Nybegynder
29. marts 2005 - 21:08 #3
ny ide:

function kontakt0(){document.getElementById('kontakt').innerHTML = "<span  OnMouseOver=\"kontakt1()\"><img src=\"billeder/kontakt%201.gif\"></span>";
}

function kontakt1(){document.getElementById('kontakt').innerHTML = "<span OnMouseOut=\"kontakt0()\"><img src=\"billeder/kontakt%202.gif\"></span>";
}

:)
Avatar billede barklund Nybegynder
29. marts 2005 - 21:11 #4
Kan du ikke sætte det hele dynamisk på img-tagget? Det er nok fordi din browser ikke når at håndtere den nye html inden musen er forsvundet.

Men vis lige hele scriptet - for jeg er overbevist om, at det kan laves via getElement på billedet.
Avatar billede roenving Novice
29. marts 2005 - 23:00 #5
F.eks. kan du gøre sådan:

function kont(pic,id){
  pic.src = "billeder/kontakt%20" + id + ".gif";
  if(id==3){
    //kode, som viser underpunkter, f.eks.
    document.getElementById('kontaktUnderpunkter').style.display = 'block';
  }else{
    //kode, som skjuler underpunkter, f.eks.
    document.getElementById('kontaktUnderpunkter').style.display = 'none';
  }
}

-- og så skriver du koden sådan:

<div id="kontakt"><img src="billeder/kontakt%202.gif" onmouseover="kont(this,1);" onmouseout="kont(this,2);" onclick="kont(this,3);">
  <div id="kontaktUnderpunkter" style="display:none;">
    <!-- dine underpunkter, f.eks. -->
    <ul>
      <li>Underpunkt 1</li>
      <li>Underpunkt 2</li>
      <li>Underpunkt 3</li>
    </ul>
  </div>
</div>
Avatar billede klapiolsen Nybegynder
31. marts 2005 - 14:19 #6
Beklager den lange tid det tog mig at vende tilbage -jeg blev inspireret af jeres indlæg til en løsning der ser ud til at fungere:

function kontakt1(){document.getElementById('kontakt').innerHTML = "<a href=\"#\" OnMouseOver=\"document.images.kontaktgif.src='billeder/kontakt%202.gif'\" OnMouseOut=\"checkmenu()\" OnClick=\"refererer stadig til en kontakt3() )="><img src=\"billeder/kontakt%201.gif\"  name=\"kontaktgif\" border=\"0\" width=\"180\" height=\"30\"></a>";
}

checkmenu() er en ny funktion der køres efter alle OnMouseOut og skifter alle menupunkter/billeder tilbage til startpositionen (med mindre kontakt3() har været kørt) -så når checkmenu() ikke at blive kørt ved første OnMouseOut, bliver den kørt efter næste. -og der ser ikke ud som "flimmer"

Jeg tror dermed barklund havde ret i at browseren ikke nåede at håndtere scriptet inden musen var væk igen, men med en funktion mindre (kontakt0() er som I kan se nu integreret i kontakt1() )går det bedre.

-Tak for hjælp og inspiration. Jeg deler point ud om et par dage til dem der vender tilbage :)
Avatar billede barklund Nybegynder
31. marts 2005 - 14:50 #7
Jeg tror det kunne laves en del smartere ved at sætte alle de rette events på fra starten :)
Avatar billede klapiolsen Nybegynder
31. marts 2005 - 15:05 #8
-Jeg vil lege videre med det, først skulle det bare fungere, og her synes jeg det var det lettest at genbruge så meget som muligt -men jeg bør f.eks. nok flytte onmouseover osv. ind på img-tagget og droppe <a href=\"#\">
Avatar billede roenving Novice
02. april 2005 - 12:03 #9
Velbekomme '-)
Avatar billede roenving Novice
02. april 2005 - 21:31 #10
Tak for point ;~}
Avatar billede barklund Nybegynder
02. april 2005 - 23:07 #11
Ja tark for dem :)
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