Avatar billede themapplz Nybegynder
05. november 2009 - 17:14 Der er 3 kommentarer og
1 løsning

settimeout, onmouseout problem

Hej!

Det er sikkert simpelt for en, der er vant til javascript. Men det virker som om mouseout trigger allerede ved mouseover. hvordan sætter jeg den til at holde indtil jeg laver mouseout?
(For at være helt præcis, så virker det som det skal ved første mouseover, men ikke ved resten)

script:

function snip(thechosenone) {
      var newboxes = document.getElementsByTagName("div");
            for(var x=0; x<newboxes.length; x++) {
                  name = newboxes[x].getAttribute("name");
                  if (name == 'regions') {
                        if (newboxes[x].id == thechosenone) {
                            newboxes[x].style.visibility = 'visible';
                  }
                  else {
                        newboxes[x].style.visibility = 'hidden';
                  }
            }
      }
}

et link:
<td valign="top" align="left" onmouseover="snip('Alsace');" onmouseout="setTimeout('snip(\'\')', 2000)"><a href="?vine,Alsace" >Alsace</a></td>

en div af flere med forskellige id:
<div class="blok" name="regions" id="Alsace">
<a href="?vine,Alsace,1" >André Kientzler</a>
<a href="?vine,Alsace,346" >Rolly Gassmann</a>
</div>

Håber der er en der kan hjælpe!
PF Tak :)
Avatar billede Slettet bruger
05. november 2009 - 18:27 #1
Split det i 2 funktioner, en vis og en sluk - det vil gøre det lettere.

Og hvorfor styrte igennem ALLE div'er på siden, ved hver mouseover ?
- du ved jo allerede hvilken du vil vise.


var shown = null
var sluks = null
function vis( therecanbeonlyone )
  {
  if (shown != null)
      if (sown.id != therecanbeonlyone)
        shown.style.visibility = "hidden"
 
  shown = document.getElementById( therecanbeonlyone )
  shown.style.visibility = "visible"
  if (sluks != null)
      {
      clearTimeout(sluks)
      sluks = null
      }
  }

function slukPlease()
  {
  sluks = setTimeout("sluk",2000)
  }

function sluk()
  {
  if (shown != null)
      shown.style.visibility = "hidden"
  shown = null
  sluks = null
  }

...

<a href="?vine,Alsace,1" onmouseover="vis('Alsace')" onmouseout="slukPlease()">André Kitzler</a>

<a href="?vine,Alsace,346" onmouseover="vis('Alsace')" onmouseout="slukPlease()">Jolly Rasmussen</a>


Utestet, men vil "i princippet" afstedkomme det du søgte
- med færre hestekræfter : )


Det du EGENTLIG spurgte om: Der er browserquirks på spil:
mouseover på alsace-div'en nedarves (nogengange) til link'ene - så du ender med en byge af mouseovers og mouseouts - bedst at undgå den slags : )
Avatar billede themapplz Nybegynder
06. november 2009 - 11:15 #2
fedt!

jeg prøver det
Avatar billede themapplz Nybegynder
06. november 2009 - 11:32 #3
BINGO! FEEEDT!

Det havde jeg aldrig fundet ud af selv..

Mange tak! :):)
Avatar billede Slettet bruger
07. november 2009 - 18:43 #4
Kan man evt. se det i aktion et sted ?
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