Avatar billede kdjweb Nybegynder
05. marts 2007 - 11:57 Der er 12 kommentarer og
1 løsning

timeout problem

Jeg er ikke en mester til JavaScript, men skulle være en rimelig enkel fejl.
Problemet er min setTimeout ikke virker.

well her er min kode :)

Mit script.
<script type="text/javascript">

var timerID = null;

function test(id)
{
    clearTimeout(timerID);
    document.getElementById(id).style.visibility="visible";
}



function test2(id)
{
    document.getElementById(id).style.visibility="hidden";
}
</script>

(D)HTML koden:
<td onMouseOver="test('menu1')" onMouseOut="timerID=setTimeout('test2('menu1')',1000)" style="background-color:#FFFFFF; padding-left:5px;">Hej1
<div id="menu1" class="dropdown_div" onMouseOver="test(this.id)" onMouseOut="timerID=setTimeout(test2(this.id),1000)">emne1<br />emne2<br />emne3</div>
</td>
Avatar billede softspot Forsker
05. marts 2007 - 12:06 #1
Måske dette fungerer(?):

<td onMouseOver="test('menu1')" onMouseOut="timerID=setTimeout('test2('menu1')',1000)" style="background-color:#FFFFFF; padding-left:5px;">Hej1
<div id="menu1" class="dropdown_div" onMouseOver="test(this.id)" onMouseOut="timerID=setTimeout('test2('+this.id+')',1000)">emne1<br />
emne2<br />emne3</div>
</td>
Avatar billede kdjweb Nybegynder
05. marts 2007 - 12:31 #2
tak for det hurtige svar, men virker desvære ikke. Den viser sig, men timeout'en forsvinder ikke.
Avatar billede kdjweb Nybegynder
05. marts 2007 - 12:34 #3
Jeg kan prøve at vise siden, den ligger bare ikke på nettet endnu
Avatar billede kdjweb Nybegynder
05. marts 2007 - 12:47 #4
http://netbar.dk/nvpro/ (virker ikke så godt i IE)
Avatar billede softspot Forsker
05. marts 2007 - 12:53 #5
Ja, ok, jeg kommer lige til at se der benyttes apostroffer i en streng og det er jo ikke så godt, så de skal først escapes:

<td onMouseOver="test('menu1')" onMouseOut="timerID=setTimeout('test2(\'menu1\')',1000)" style="background-color:#FFFFFF; padding-left:5px;">Hej1
<div id="menu1" class="dropdown_div" onMouseOver="test(this.id)" onMouseOut="timerID=setTimeout('test2('+this.id+')',1000)">emne1<br />
emne2<br />emne3</div>
</td>

Prøv lige at se om det fungerer bedre...
Avatar billede softspot Forsker
05. marts 2007 - 12:56 #6
...og så skal jeg jo lige prøve at komme ind i kampen, for der skal jo også escapede apostroffer i kaldet til test2 ved rollout på popup-laget:

<td onMouseOver="test('menu1')" onMouseOut="timerID=setTimeout('test2(\'menu1\')',1000)" style="background-color:#FFFFFF; padding-left:5px;">Hej1
<div id="menu1" class="dropdown_div" onMouseOver="test(this.id)" onMouseOut="timerID=setTimeout('test2(\''+this.id+'\')',1000)">emne1<br />
emne2<br />emne3</div>
</td>
Avatar billede kdjweb Nybegynder
05. marts 2007 - 12:59 #7
Nu er det ClearTimeout som ikke virker? :P eller var jo meningen at når man tar musen over et nyt emne skal den gamle forsvinde. :) eller virker det skønt
Avatar billede softspot Forsker
05. marts 2007 - 13:10 #8
Husk lige den sidste rettelse jeg nævnte med apostroffer i kaldet til test2 (sitet under dit link fra tidligere er i det mindste ikke opdateret :)).
Avatar billede kdjweb Nybegynder
05. marts 2007 - 13:15 #9
sorry sad med det på maskinen :) er uploaded nu.
Avatar billede softspot Forsker
05. marts 2007 - 13:30 #10
Ja, det er fordi du ikke holder styr på hvilket lag der er åbent i øjeblikket. Som det er nu lukkes lagt kun af den timeout du har sat op, så lukningen kommer til at foregå med en forsinkelse på 1 sekund, men hvis du vil have det åbne lag lukket, så skal du sætte visibility på det åbne lag idet du forsøger at åbne et nyt. Timeout på 1 sekund skal kun effektueres i de tilfælde at der ikke åbnes et nyt lag som det næste. Derfor skal du nok have indført en variabel mere, som huske det aktuelle lag:

<script type="text/javascript">
var timerID = null;
var aktueltlag = null;

function test(id)
{
    if(aktueltlag)
    {
        clearTimeout(timerID);
        aktueltlag.style.visibility = "hidden";
    }
    aktueltlag = document.getElementById(id);
    aktueltlag.style.visibility = "visible";
}

function test2(id)
{
    aktueltlag.style.visibility="hidden";
    aktueltlag = null;
}
</script>
Avatar billede kdjweb Nybegynder
05. marts 2007 - 13:32 #11
genialt, tusind tak :) smid et svar
Avatar billede softspot Forsker
05. marts 2007 - 13:38 #12
Velbekomme :)
Avatar billede softspot Forsker
05. marts 2007 - 13:48 #13
Tak for point :)
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