¿Por qué no funciona Establecer tiempo de espera de JavaScript? [closed]
⏰ 2 minutos de lectura
james dorfmann
Estoy tratando de usar setTimeout, pero no funciona. Cualquier ayuda es apreciada.
¿Alguien sabe cómo arreglar esto?
var button = document.getElementById("reactionTester");
var start = document.getElementById("start");
function init() {
var startInterval/*in milliseconds*/ = 1000;
setTimeout(startTimer(), startInterval);
}
function startTimer() {
document.write("hey");
}
Aprender como depurar JavaScript. Está intentando acceder a un elemento DOM antes de que exista. Consulte ¿Por qué jQuery o un método DOM como getElementById no encuentras el elemento?. Y por favor explica qué exactamente no está trabajando.
– Félix Kling
02/01/2014 a las 20:10
posible duplicado de ¿Por qué se ejecuta el método inmediatamente cuando uso setTimeout?
– Félix Kling
02/01/2014 a las 20:14
Matt Catellier
Si se encuentra en una situación en la que necesita pasar parámetros a la función que desea ejecutar después del tiempo de espera, puede envolver la función “nombrada” en una función anónima.
es decir, no funcionará porque llamará a la función de inmediato
setTimeout( startTimer(p1, p2), 1000);
¿Qué pasa si tienes que pasar una variable?
– Jeff
14 mayo 2015 a las 18:04
@Jeff – ¿Puedes dar más detalles?
– j08691
14 mayo 2015 a las 18:34
Lo siento, eso fue redactado mal. Descubrí lo que estaba tratando de hacer… Estaba tratando de pasar una función que requiere una variable como mi primer argumento. Acabo de envolverlo en una función anónima.
– Jeff
14 mayo 2015 a las 18:35
Usar:
setTimeout(startTimer,startInterval);
Está llamando a startTimer() y alimenta su resultado (que no está definido) como un argumento para setTimeout().
usuario126587
Si desea pasar un parámetro a la función retrasada:
setTimeout(setTimer, 3000, param1, param2);
glenn ferrie
Por favor cambie su código de la siguiente manera:
<script>
var button = document.getElementById("reactionTester");
var start = document.getElementById("start");
function init() {
var startInterval/*in milliseconds*/ = Math.floor(Math.random()*30)*1000;
setTimeout(startTimer,startInterval);
}
function startTimer(){
document.write("hey");
}
</script>
A ver si eso ayuda. Básicamente, la diferencia es que hace referencia a la función ‘startTimer’ en lugar de ejecutarla.
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Aprender como depurar JavaScript. Está intentando acceder a un elemento DOM antes de que exista. Consulte ¿Por qué jQuery o un método DOM como
getElementById
no encuentras el elemento?. Y por favor explica qué exactamente no está trabajando.– Félix Kling
02/01/2014 a las 20:10
posible duplicado de ¿Por qué se ejecuta el método inmediatamente cuando uso setTimeout?
– Félix Kling
02/01/2014 a las 20:14