Estoy aprendiendo setTimeout , setInterval , clearInterval .
ahora traté de escribir dicho código, pero clearInterval no funciona. Código:
<h2>Hello!</h2> <p>i am a paragraph</p> <button onclick="setInterval(messageOnInterval, 110)">Click Me</button> <button onclick="clearInterval(messageOnInterval)">Stop</button> <script> function messageOnInterval() { var p=document.createElement('p'); p.innerHTML = "i am a paragraph"; document.body.appendChild(p); } </script>¡Gracias de antemano por la ayuda!
setInterval devuelve un valor que debe usarse al llamar a clearInterval . No pasa la función como arg, pero el valor devuelto por una llamada anterior a setInterval
id = setInterval(messageOnInterval, 110) clearInterval(id) En su caso, debe declarar una variable JS dentro de un script y usarla como su identificación.
Nota: esto no funcionará correctamente si presiona el botón varias veces, ya que perderá los valores devueltos setInteval anteriores.
Debe asignar setInterval a una variable para obtener su identificador que está en formato de número, luego puede llamar a clearInterval para borrar ese temporizador.
No puede asignar una función a clearInterval .
Así que debería ser así:
<script> function messageOnInterval_Impl() { var p = document.createElement('p'); p.innerHTML = "i am a paragraph"; document.body.appendChild(p); } var intervalHandle; function setMessageOnInterval() { intervalHandle = setInterval(function () { messageOnInterval_Impl(); // ... }, 110) } </script> <h2>Hello!</h2> <p>i am a paragraph</p> <button onclick="setMessageOnInterval()">Click Me</button> <button onclick="clearInterval(intervalHandle)">Stop</button>