login  Naam:   Wachtwoord: 
Registreer je!
 Forum

JS server tijd weergeven

Offline GroundZero - 19/11/2011 14:33
Avatar van GroundZeroLid Beste,

onderstaand script blijft niet herhalen. Hij weergeeft het één keer en dan blijft hij stil staan terwijl ik juist wil dat hij het blijft herhalen!

Wat doe ik fout?


  1. <script language="javascript">
  2. function displayServerTime(){
  3. var curHour = <?php echo date("H"); ?>;
  4. var curMin = <?php echo date("i"); ?>;
  5. var curSec = <?php echo date("s"); ?>;
  6.  
  7. document.getElementById('server-time').innerHTML = curHour + ":" + curMin + ":" + curSec;
  8. }
  9.  
  10. function timeoutstart(){
  11. var timeout = setInterval(displayServerTime(), 1000);
  12. }
  13.  
  14. timeoutstart();
  15. </script>

9 antwoorden

Gesponsorde links
Offline Filip - 19/11/2011 14:35
Avatar van Filip IRC guru Dat komt omdat JS client side is en PHP server side. Met andere woorden, je zet de tijd in je broncode, maar die veranderd niet. Gebruik een counter ofzo om die te updaten in jquery of dergelijke.
Offline GroundZero - 19/11/2011 14:47
Avatar van GroundZero Lid ohhh oke jammer, dacht echt dat het zo had gegaan haha, was dan een lekkere korte code geweest 
Offline Filip - 19/11/2011 14:52
Avatar van Filip IRC guru Jah niet dus.. Het probleem zit em in het feit dat php enkel uitgevoerd word bij de request, en daarna niet meer.. Je kan er dus de 'begin' tijd mee instellen, maar niet het tellen zelf..
Offline GroundZero - 19/11/2011 14:54 (laatste wijziging 19/11/2011 14:57)
Avatar van GroundZero Lid ohhhhh potverdorie kan ik in Javascript geen UUR, MINUUT, en SECONDEN opvragen? even googlen haha maar dan is het weer van de client?
Offline Sam - 19/11/2011 14:58
Avatar van Sam PHP expert Ja dat gaat.

Javascript Date object
(Mijn excuses voor de w3schools link)

Denk er wel aan dat je dan niet meer met server time bezig bent.
Offline GroundZero - 19/11/2011 15:12
Avatar van GroundZero Lid Heb het al opgelost met jQuery:

  1. <script language="javascript">
  2. $(document).ready(function(){
  3. $('#server-time').load('includes/servertimer.php');
  4. var refreshId = setInterval(function(){
  5. $('#server-time').load('includes/servertimer.php');
  6. }, 1000);
  7. $.ajaxSetup({ cache: false })
  8. });
  9. </script>


In de PHP file gewoon een date request met H:i:s formaat ;)
Offline Filip - 19/11/2011 17:26
Avatar van Filip IRC guru euhm maar dit is wel niet bepaald goed voor je server... Elke persoon op je site gaat dus elke seconde een request sturen... Je kan dit echt beter via een klok/countdown timer doen die het start uur meekrijgt in de config ofzo..
Offline WouterJ - 20/11/2011 13:34 (laatste wijziging 20/11/2011 13:34)
Avatar van WouterJ HTML gevorderde Wat je beter kunt doen is met PHP 1 keer de server tijd ophalen en vervolgens een scriptje in JS die er elke seconde 1tje bij op telt:
  1. var hour = <?php echo date('H'); ?>,
  2. minute = <?php echo date('i'); ?>,
  3. seconde = <?php echo date('s'); ?>
  4.  
  5. setInterval(function() {
  6. if( seconde >= 60 ) {
  7. if( minute >= 60 ) {
  8. if( hour >= 24 ) {
  9. hour = 0;
  10. }
  11. else {
  12. ++hour;
  13. }
  14. }
  15. else {
  16. ++minute;
  17. }
  18. }
  19. else {
  20. ++seconde;
  21. }
  22. document.getElementById('time').innerHTML = hour + ':' + minute + ':' + seconde;
  23. }, 1000); // 1000ms is 1s
Offline Sam - 20/11/2011 14:04 (laatste wijziging 20/11/2011 14:07)
Avatar van Sam PHP expert En toch vind ik dat je gebruik moet maken van de voordelen van het Date object..

  1. var now = new Date();
  2. var diff = now.getTime() - <?php echo (time() * 1000); ?>; //JavaScript werkt met milliseconden, php met seconden, dit houdt het verschil bij tussen de server tijd en de lokale tijd.
  3.  
  4. setInterval(function() {
  5. now = new Date();
  6. now.setTime(now.getTime() - diff); //Trekt het verschil tussen server tijd en lokale tijd van de lokale tijd af, zodat de server tijd weergegeven wordt
  7. var h = now.getHours();
  8. var m = now.getMinutes();
  9. var s = now.getSeconds();
  10. $('#server-time').html((h >= 10 ? h : '0' + h) + ':' + (m >= 10 ? m : '0' + m) + ':' + (s >= 10 ? s : '0' + s));
  11. }, 1000);

Zelf geen seconden bijtellen, zelf niet nakijken wanneer er minuten of uren aangepast moeten worden, gewoon het verschil in tijd uitrekenen en elke seconde de tijd vragen aan het Date object.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.233s