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>
Annonceindlæg fra Barco
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>
05. marts 2007 - 12:31
#2
tak for det hurtige svar, men virker desvære ikke. Den viser sig, men timeout'en forsvinder ikke.
05. marts 2007 - 12:34
#3
Jeg kan prøve at vise siden, den ligger bare ikke på nettet endnu
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...
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>
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
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 :)).
05. marts 2007 - 13:15
#9
sorry sad med det på maskinen :) er uploaded nu.
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>
05. marts 2007 - 13:32
#11
genialt, tusind tak :) smid et svar
05. marts 2007 - 13:38
#12
Velbekomme :)
05. marts 2007 - 13:48
#13
Tak for point :)
Vi tilbyder markedets bedste kurser inden for webudvikling