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.
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 :
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 :