login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SetTimeout werkt niet?

Offline Martijn - 30/04/2008 11:50 (laatste wijziging 30/04/2008 11:53)
Avatar van MartijnCrew PHP Ik heb kop of munt gemaakt, en ik wil een plaatje van 1 sec die heen en weer draait, maar als de uitkomst er dan al meteen onder staat boeit niemand dat plaatje...

Dus ik wil graag dat er na 1 sec een tekstje komt te staan. Met die dingen die google me gaf kwam ik tot dit:
  1. <html>
  2. <head>
  3. <script language="javascript">
  4. function test()
  5. {
  6. document.write("Hello");
  7. setTimeout(document.write(" World"), 5000);
  8. }
  9. </script>
  10. </head>
  11. <body>
  12. <script language="javascript">
  13. test()
  14. </script>
  15. </body>
  16. </html>


en de sitemasters uitleg gaf me toch wel een beetje de indruk dat ik het goed deed maar toch komt er in 1x hello world te staan, dats niet de bedoeling 
(ik heb hier niet 1sec, maar 5, zodat het wat beter te zien is als er maar 1 woord komt)

edit: Het mag NIET de hele pagina laten stoppen met laden, anders had n php sleep() voldoende geweest 

13 antwoorden

Gesponsorde links
Offline Ontani - 30/04/2008 12:06 (laatste wijziging 30/04/2008 12:06)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
  1. setTimeout(document.write(" World"), 5000);


moet:
  1. setTimeout("document.write(' World')", 5000);


zijn
Offline Martijn - 30/04/2008 12:16 (laatste wijziging 30/04/2008 12:19)
Avatar van Martijn Crew PHP als ik dat doe, doet ie t ja, maar dan blijft ie eeuwig laden? ook als ik er setInterval van maak
oh, en als ik boven het script deel tekst zet, en eronder, verdwijnt dat allemaal 
Offline Ontani - 30/04/2008 12:24
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
dit omdat document.write geen goede manier is om dingen weg te schrijven. gebruik een element in je pagina die je opvult ofzo (een div of een span).
Offline Martijn - 30/04/2008 12:25
Avatar van Martijn Crew PHP eh, javascriptleek  
Offline Ibrahim - 30/04/2008 12:28 (laatste wijziging 30/04/2008 12:31)
Avatar van Ibrahim PHP expert
  1. setTimeout( function() {
  2. document.write('World');
  3. }, 5000);


is een veel overzichtelijker manier dan binnen quotes te doen.

Ik zie wat je bedoelt, hij blijft de pagina laden. Waarom dat gebeurt, zou ik niet weten 


edit:
dit is wat ontani bedoelt:

  1. <title>setTimeout</title>
  2. <script type="text/javascript">
  3. window.onload = function() {
  4.  
  5. setTimeout( function() {
  6. document.getElementById('myDiv').innerHTML = 'Hello World !';
  7. }, 5000);
  8.  
  9. };
  10. </script>
  11. </head>
  12. <div id="myDiv"></div>
  13. </body>
  14. </html>
Offline Martijn - 30/04/2008 12:33
Avatar van Martijn Crew PHP bedankt alletwee, ik zal er binnenkort naar kijken, ik moet zo gaan, ik zal niet de oplossing knopje gebruiken, voor t geval t toch niet zo werkte, maar hier moet ik een eind mee komen 
Offline Ontani - 30/04/2008 14:36
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Dat hij blijft laden ligt aan het feit dat voor document.write het document geopend moet worden om te schrijven. ( wat automatisch gebeurd door javascript ). Maar na de document.write wordt het document niet automatisch gesloten. Daarom lijkt het alsof deze blijft laden en nog inhoud vannuit javascript verwacht. document.close() zou dit probleem moeten oplossen.
Offline Ultimatum - 30/04/2008 15:28
Avatar van Ultimatum PHP expert Ik heb gisteren zoiets gemaakt voor mijn captcha systeem, als je er op klikt verschijnt er voor 1 seconden zo'n loader.

Wat Ontani al zei, is het beter om de data weg te schrijven naar een div.

Dit is hoe ik het heb gedaan, kijk maar of je er wat aan hebt.
  1. function reloadCaptcha(hash) {
  2.  
  3. var captchaImage = document.getElementById('captcha').src;
  4. document.getElementById('captcha').src = './templates/images/ajax-loader.gif'
  5. setTimeout("document.getElementById('captcha').src = '" + captchaImage + "?hash=" + hash + "'", 1000);
  6.  
  7. }
Offline Ibrahim - 30/04/2008 16:15
Avatar van Ibrahim PHP expert Eeh, Ultimatum, het enige wat je doet is de reactie van Ontani veranderen met een CAPTCHA reloader. Het principe is hetzelfde, de TS was daar al achter.
Offline Ultimatum - 30/04/2008 20:37
Avatar van Ultimatum PHP expert Dat weet ik wel, maar een stukje code is meestal wat duidelijker dan gewoon uitleggen hoe het moet (No offence Ontani ).

Dus ik dacht dat het wel meerwaarde zou hebben om een stukje werkende code neer te zetten.
Offline Ontani - 30/04/2008 20:46
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Non taken, ik hoop altijd maar dat de mensen snappen wat ik bedoel. Anders moeten ze hun javascript ervaring maar wat bijschaven.
Offline Martijn - 01/05/2008 12:24 (laatste wijziging 01/05/2008 12:34)
Avatar van Martijn Crew PHP [edit]Ik ben zelf al stapje dichterbij, dus had maar ff hier de code upgedate[/edit]
ik heb nu dit:
  1. <html>
  2. <head>
  3. <title>setTimeout</title>
  4. <script type="text/javascript">
  5. window.onload = function(tekst) {
  6. setTimeout( function() {
  7. document.getElementById('myDiv').innerHTML = tekst;
  8. }, 3000);
  9.  
  10. };
  11. </script>
  12. </head>
  13. <body>
  14. hoi<br>
  15. <div id="myDiv"><script type="text/javascript">function(123)</script></div>
  16. <br>
  17. hoi
  18. </body>
  19. </html>
het ik nu, maar dat creërd: '[object Event]'

Het probleem is namelijk, ik kan niet in de head al bepalen wat er moet worden weergegeven dat bepaald mn php pas later
Offline Ibrahim - 01/05/2008 16:34
Avatar van Ibrahim PHP expert wat dacht je ervan om de setTimeout in een functie neer te planten, en die aan te roepen zodra je php de tekst heeft bepaald ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s