Estoy tratando de crear una llamada de intervalo a una función en jQuery, ¡pero no funciona! Mi primera pregunta es, ¿puedo mezclar JavaScript común con jQuery?
¿Debo usar setInterval("test()",1000); o algo como esto:
var refreshId = setInterval(function(){ code... }, 5000);¿Dónde pongo la función que llamo y cómo activo el intervalo? ¿Hay una diferencia en cómo declarar una función en JavaScript en comparación con jQuery?
Para escribir el mejor código, "debería" usar el último enfoque, con una referencia de función:
var refreshId = setInterval(function() {}, 5000);o
function test() {} var refreshId = setInterval(test, 5000);pero tu enfoque de
function test() {} var refreshId = setInterval("test()", 5000); es básicamente válido también (siempre que test() sea global).
Tenga en cuenta que no existe tal cosa como "en jQuery". Todavía estás escribiendo el lenguaje Javascript; solo está utilizando algunas funciones prefabricadas que son la biblioteca jQuery.
En primer lugar: sí, puedes mezclar jQuery con JS común :)
La mejor manera de construir una llamada de intervalo de una función es usar el método setTimeout:
Por ejemplo, si tiene una función llamada test() y quiere repetirla los 5 segundos, puede construirla así:
function test(){ console.log('test called'); setTimeout(test, 5000); }Finalmente, debe activar la función una vez:
$(document).ready(function(){ test(); });Esta función de documento listo se llama automáticamente, después de cargar todo el html.
He escrito un código personalizado para la función setInterval que también puede ayudar
let interval; function startInterval(){ interval = setInterval(appendDateToBody, 1000); console.log(interval); } function appendDateToBody() { document.body.appendChild( document.createTextNode(new Date() + " ")); } function stopInterval() { clearInterval(interval); console.log(interval); } <!DOCTYPE html> <html> <head> <title>setInterval</title> </head> <body> <input type="button" value="Stop" onclick="stopInterval();" /> <input type="button" value="Start" onclick="startInterval();" /> </body> </html>