Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 00:02 Der er 13 kommentarer og
1 løsning

flet SetTimeOut() ind i script

Er der nogle der kan finde ud af at flette setTimeOut() ind i dette script så den sætter visibility til hidden efter 2 sekunder


<script language="JavaScript">
<!--
n=document.layers;
ie=document.all;

function showlabel(labelid){
if(ie || n){
if(n) {document.layers[labelid].visibility="show";}
else {document.all(labelid).style.visibility="visible";}
}
}

function hidelabel(labelid){
if(ie || n){
if(n) {document.layers[labelid].visibility="hidden";}
else {document.all(labelid).style.visibility="hidden";}
}
}


// -->
</script>

Jeg har prøvet men det gik fuldstændig i ged

Mange tak
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:09 #1
hvor kalder du din hadelabel?
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:09 #2
hide
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:11 #3
<a href="#" onmouseout="timer=setTimeout('hidelabel(id1)', 2000 );">link</a>

sådan?
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 00:12 #4
<div ... onMouseout="hidelabel('label1');">

Er det det du mener??
Avatar billede skovenborg Nybegynder
10. november 2004 - 00:13 #5
og så måske lige gøre sådan at normale at mozilla-brugere kan være med:
<script language="JavaScript">
<!--
n=document.layers;
ie=document.all;
dom=document.getElementById;

function showlabel(labelid){
if(ie || n || dom){
if (dom) {document.getElementById(labelid).style.visibility="visible";}
else if(n) {document.layers[labelid].visibility="show";}
else {document.all(labelid).style.visibility="visible";}
}
}

function hidelabel(labelid){
if(ie || n || dom){
if (dom) {document.getElementById(labelid).style.visibility="hidden";}
else if(n) {document.layers[labelid].visibility="hidden";}
else {document.all(labelid).style.visibility="hidden";}
}
}


// -->
</script>
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:20 #6
og endnu kortere nu kun med én funktion ;-)

<script type="text/javascript">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
dom =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function hidelabel(id,state){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.visibility = state;
}
</script>

<div id="lag1" style="visibility:hidden">asdkhakdh</div>

<a href="#" onmouseover="hidelabel('lag1','visible')"  onmouseout="timer=setTimeout('hidelabel(\'lag1\',\'hidden\')', 2000 );">link</a>
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 00:21 #7
Der er et problem for den kan ikke finde ud af timeout'et hvis man tager den over objektet igen inden timeout er færdig

Hvordan kommer man uden om det problem?

Kan man slette det forige timeout?
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:25 #8
<script type="text/javascript">

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
dom =(document.getElementById)? true:false
var timer;

function hidelabel(id,state){
    c = (timer)? clearTimeout(timer) : void(0);
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
styleObj.visibility = state;
}
</script>

<div id="lag1" style="visibility:hidden">asdkhakdh</div>

<a href="#" onmouseover="hidelabel('lag1','visible')"  onmouseout="timer=setTimeout('hidelabel(\'lag1\',\'hidden\')', 2000 );">link</a>
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 00:31 #9
Du har fuldstændig sat mig af

Kan du forklare hvordan du klarer det problem jeg beskrev oven over?
Avatar billede nikolajdu Nybegynder
10. november 2004 - 00:50 #10
<script type="text/javascript">

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
dom =(document.getElementById)? true:false
var timer;

function hidelabel(id,state){
    c = (timer !=false)? clearTimeout(timer) : void(0);
    var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
    styleObj.visibility = state;
}
</script>

<div id="lag1" style="visibility:hidden">asdkhakdh</div>
<a href="#" onmouseover="hidelabel('lag1','visible')"  onmouseout="timer=setTimeout('hidelabel(\'lag1\',\'hidden\')', 2000 );">link</a>


Jeg tjekker om variablen "timer" er sat på linien

c = (timer !=false)? clearTimeout(timer) : void(0);

Er den det skal den cleare timer ellers intet void(0);
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 01:22 #11
Kunne man så ikke smide setTimeout ind i den funktion også, sådan at den sætter den der og ikke i onmouseout?
Avatar billede nikolajdu Nybegynder
10. november 2004 - 01:28 #12
jo selvfølgelig men det kommer jo an på hvor mange links du har om det kan betale sig.

<script type="text/javascript">

ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
dom =(document.getElementById)? true:false
var timer;

function timeIt(id,state){
    timer=setTimeout("hidelabel('"+id+"','"+state+"')", 2000 )
}
function hidelabel(id,state){
    c = (timer !=false)? clearTimeout(timer) : void(0);
    var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
    styleObj.visibility = state;
}
</script>

<div id="lag1" style="visibility:hidden">asdkhakdh</div>
<a href="#" onmouseover="hidelabel('lag1','visible')"  onmouseout="timeIt('lag1','hidden');">link</a>
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 20:48 #13
Ok, egentlig virket det fint, men hvis jeg nu har flere links og jeg tager musen over alle sammen en efter en, vil kun den sidste forsvinde igen efter 2 sekunder og de andre vil forblive synlige, er der en måde at enten give dem en timer hver eller gøre alle andre usynlige når man tager den hen over en anden?
Avatar billede pissed_squirrel Nybegynder
10. november 2004 - 20:48 #14
Det skal lige siges at jeg har 4 links i det hele
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