Avatar billede JesperKPedersen Nybegynder
26. januar 2012 - 22:47 Der er 3 kommentarer

"genbrug" af billed ved onmouseover/out handlinger giver problemer

Jeg vil gerne bruge onMouseOver og onMouseOut til at fremhæve nogle menuvalg ved at ændre et billede.

Desværre sker der det at de punkter jeg har været over alle ændrer sig når blot et punkt udsættes for onMouseOver handlingen.

Eksempel (* = animetet gif bullet):

* Menu 1  * Menu 2    * Menu 3

Hvis jeg kører musen over "menu 2" ændres mit "menu 2" billede som den skal.
Hvis jeg derefter går over "menu 1" ændres "menu 1" og "menu 2" billedet ved onMouseOut handlingen. Sidt hvis jeg går over "menu 3" så ændres alle 3 billeder.

Alle billeder har en individuel "name" attribut som jeg bruger til at ændre billedet med.

Min kode ser sådan ud:
i <head> delen:
    function cImage(image, filename)
    {
      if (document.images) {
        document[image].src=filename;
      }
    }


<a href="menu1"
    onmouseover="cImage('anim_1', 'pix/anim_over.gif'); return true;"
    onmouseout="cImage('anim_1', 'pix/anim_out.gif'); return true;"
>
    <img src="pix/out.gif"
        name="anim_1" width="15" height="15"
        border="0">
    Menu 1
  </a>

<a href="menu2"
    onmouseover="cImage('anim_2', 'pix/anim_over.gif'); return true;"
    onmouseout="cImage('anim_2', 'pix/anim_out.gif'); return true;"
>
    <img src="pix/out.gif"
        name="anim_2" width="15" height="15"
        border="0">
    Menu 2
  </a>

<a href="menu3"
    onmouseover="cImage('anim_3', 'pix/anim_over.gif'); return true;"
    onmouseout="cImage('anim_3', 'pix/anim_out.gif'); return true;"
>
    <img src="pix/out.gif"
        name="anim_3" width="15" height="15"
        border="0">
    Menu 2
  </a>

--------

Nogen ideer om, hvad der går galt?
Mit eget gæt er at når .src er sat til anim_out.gif - og man så sætter en ny .src for et andet billede som bruger samme anim_out.gif som kilde - så genopfriskes alle billederne - dvs. alle menupunkter animeres hvor kilden er anim_out.gif - og ikke kun den image.src hvor man rent faktisk laver ændringen.

Næste spørgsmål er så - hvordan kommer man uden om det - eller bliver man nødt til at lave et hav helt ens billeder for hver enkelt menupunkt?

Hilsen
JesperKP
Avatar billede olebole Juniormester
26. januar 2012 - 22:55 #1
<ole>

Jegh har svært ved at forstå, hvad du skriver, men scriptet er i hvertfald dybt forældet. Dette er et bedre opdateret bud:

<script type="text/javascript">
function cImage(id, filename) {
    document.getElementById(id).setAttribute("src", filename);
}
</script>

<a href="menu1"
    onmouseover="cImage('anim_1', 'pix/anim_over.gif')"
    onmouseout="cImage('anim_1', 'pix/anim_out.gif')"
>
    <img src="pix/out.gif"
        id="anim_1" width="15" height="15"
        border="0">
    Menu 1
  </a>

<a href="menu2"
    onmouseover="cImage('anim_2', 'pix/anim_over.gif')"
    onmouseout="cImage('anim_2', 'pix/anim_out.gif')"
>
    <img src="pix/out.gif"
        id="anim_2" width="15" height="15"
        border="0">
    Menu 2
  </a>

<a href="menu3"
    onmouseover="cImage('anim_3', 'pix/anim_over.gif')"
    onmouseout="cImage('anim_3', 'pix/anim_out.gif')"
>
    <img src="pix/out.gif"
        id="anim_3" width="15" height="15"
        border="0">
    Menu 2
  </a>

Så må du prøve at forklare resten lidt tydeligere  =)

/mvh
</bole>
Avatar billede JesperKPedersen Nybegynder
26. januar 2012 - 23:52 #2
Jeg har lagt et simpelt eksempel på http://menutest.famped.dk/test.html
Prøv at se hvad der sker når man først går over et link - dernæst et andet.

Så blinker det første link "med".

Det er vist lettere at prøve det end at jeg forsøger at beskrive problemstillingen.

Men tak for opdateringen på Javascript - er nu også et godt stykke tid siden jeg har haft fingerne i det sidst.
Avatar billede olebole Juniormester
27. januar 2012 - 00:16 #3
Ja, da det jo er den samme gif, du bruger, er alt, som det bør være. Sådan virker animerede giffer  =)
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