Maison > Questions et réponses > le corps du texte
C'est mon code pour afficher un compte à rebours pour otp, mais il n'affiche que des valeurs statiques et ne se met pas à jour toutes les secondes comme prévu.
<?php // Set the target end time (in this example, 10 minutes from now) $endTime = time() + (10 * 60); // Calculate the remaining time $remainingTime = $endTime - time(); // Display the remaining time echo "<span id='countdown'></span>"; ?> <script> // Display the remaining time in minutes and seconds function displayCountdown() { var remainingTime = <?php echo $remainingTime; ?>; var minutes = Math.floor(remainingTime / 60); var seconds = remainingTime - (minutes * 60); document.getElementById("countdown").innerHTML = minutes + "m " + seconds + "s"; remainingTime--; if (remainingTime < 0) { clearInterval(interval); document.getElementById("countdown").innerHTML = "Time's up!"; } } var interval = setInterval(displayCountdown, 1000); </script>
Veuillez souligner ce qui me manque.
P粉3767388752024-04-03 00:59:16
N'oubliez pas que le code PHP est exécuté sur le serveur - et n'a aucun impact sur l'exécution de JS ("browser time"). Votre fonction JS ressemble en fait à ceci :
sssccc
Ici, le problème est immédiatement visible : vous n'exécutez qu'une seule displayCountdown
函数期间递减 remainingTime
。下次调用时,该值再次为 600 - 因为 remainingTime
variable locale.
La solution la plus simple consiste donc à déplacer cette variable en dehors de la plage displayCountdown
, comme ceci :
sssccc