J'essaie d'appeler ma fonction toutes les 4 secondes pour incrémenter un numéro en direct. Pour une raison quelconque, je continue à recevoir des erreurs. Voici mon code:
<html>
<head>
<title>Recycle Counter</title>
<script type="text/javascript">
function Rand(from, to)
{
return Math.floor(Math.random() * (to - from + 1) + from); // Generates random number
}
var num = Rand(10000, 100000);
function getNum() // Gets triggered by page load so innerHTML works
{
document.getElementById('counter').innerHTML = num + 7;
setTimeOut(getNum(), 4000);
}
</script>
</head>
<body onload="getNum()">
<div id="counter">
</div>
</body>
</html>
Dans getNum
, vous invoquez directement la fonction getNum
, provoquant l'épuisement de la pile. Remplacez l'appel de fonction getNum()
par la référence de fonction getNum
:
function getNum() // Gets triggered by page load so innerHTML works
{
num += 7; // Increase and assign variable
document.getElementById('counter').innerHTML = num;
setTimeout(getNum, 4000); // <-- The correct way
}
Lien vers la documentation de setTimeout
.
Le problème est que votre appel à setTimeout
appelle getNum
au lieu de le planifier pour exécution. Cela conduit à une récursion infinie et à un débordement de pile. Essayez plutôt ce qui suit
setTimeout(getNum, 4000);
setTimeOut
doit être setTimeout