Avatar billede shjorth Nybegynder
12. januar 2010 - 20:55 Der er 10 kommentarer og
1 løsning

Vis div efter 5 sek

Hejsa

Er der nogen der ved hvorledes et javascript kan laves så den viser en div efter 5 sek?

Det skal bruges i forbindelse med AJAX, så hvis siden loader i mere end 5 sek, skal der komme et "prøv igen" link.

Samtidig, skal det naturligvis ikke vises hvis selve ajax siden loades.

Håber der er nogen eksperter derude :) Mange tak
Avatar billede Slettet bruger
12. januar 2010 - 22:12 #1
Det kan gøres med funktionen setTimeout. Eksempel:

function visDiv() {
  document.getElementById('div').style.visibility = 'visible';
}

ajaxTimeout = setTimeout('visDiv()', 5000); //5000 milisekunder = 5 sekunder

function ajaxLoaded() {
  clearTimeout(ajaxTimeout); //Kaldes når siden er indlæst
}
Avatar billede shjorth Nybegynder
12. januar 2010 - 22:30 #2
Jeg kunne vel ikke få dig til at give et eksempel på brugen? Ja, jeg er sku ikke skide skarp i JS
Avatar billede shjorth Nybegynder
12. januar 2010 - 22:33 #3
Følgende er forsøgt:

[code]
<script type="text/javascript">
function visDiv() {
  document.getElementById('dada').style.visibility = 'visible';
}

ajaxTimeout = setTimeout('visDiv()', 5000); //5000 milisekunder = 5 sekunder
</script>


<div id='dada' style='display:none;'>HEJ MED DIG</div><br><br>
[/code]
Avatar billede shjorth Nybegynder
12. januar 2010 - 22:33 #4
hmm code var ikke løsningen :D
Anyways. Følgende er forsøgt:

<script type="text/javascript">
function visDiv() {
  document.getElementById('dada').style.visibility = 'visible';
}

ajaxTimeout = setTimeout('visDiv()', 5000); //5000 milisekunder = 5 sekunder
</script>


<div id='dada' style='display:none;'>HEJ MED DIG</div><br><br>
Avatar billede intenz Novice
12. januar 2010 - 23:03 #5
Grunden til at det ikke virker er ikke din setTimeout, men at du benytter to forskellige css attributes til at fjerne/vise din tekst.
Visibility og display ophæver ikke hinanden.

Brug denne kode i visDiv i stedet:
document.getElementById('dada').style.display = 'block';
Avatar billede Slettet bruger
12. januar 2010 - 23:06 #6
Eller denne kode til div'en, for at undgå at siden "hopper" når den lige pludselig kommer frem:

<div id='dada' style='visibility:hidden;'>HEJ MED DIG</div><br><br>
Avatar billede shjorth Nybegynder
13. januar 2010 - 00:23 #7
Perfekt. Lige en enkelt detalje.. "cleatimeout" ser ud til at "nulstille" timeout delen, men så går der 5 sek og så kommer den igen.. Tanken er at den skal stoppes helt. :)
Avatar billede shjorth Nybegynder
13. januar 2010 - 01:48 #8
Det ser nu således ud:

function visDiv() {
  document.getElementById('stuckdiv').setStyle('display', 'block');

}
function go() {
tot=setTimeout(visDiv, 5000);
}


...ajax.ondone...
clearTimeout(tot);

Jeg har så en event der hedder ajax.ondone, hvor jeg skal flette et eller andet ind til at stoppe den count der.. "cleatimeout" som du skriver.

Jeg kan bare ikke få det til at virke.
Avatar billede Slettet bruger
13. januar 2010 - 09:26 #9
Egentligt troede jeg at den stoppede timeren, men hvis det ikke er tilgældet finder jeg gerne en løsning:

function visDiv() {
  If(tot) {
   document.getElementById('stuckdiv').setStyle('display', 'block');
  }
}

function go() {
tot=setTimeout(visDiv, 5000);
}


...ajax.ondone...
tot = null; //Eller false
Avatar billede shjorth Nybegynder
30. januar 2010 - 12:28 #10
Takker for hjælpen. Smider du et svar ?
Avatar billede Slettet bruger
31. januar 2010 - 14:31 #11
Kommer her
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