setTimeout no está trabajando, me estoy perdiendo algo aquí?
-
20-09-2019 - |
Pregunta
Sé que es bastante básico, pero simplemente no puedo conseguir que funcione. se sigue echando "objeto esperado" error ...
$(document).ready(function(){
setTimeout('showMessage()', 1000);
function showMessage() {
alert('abc');
}
});
Solución
Usted ha envuelto su función entre comillas, por lo que lo trata como una cadena, no como el objeto que está esperando, por lo que, como dijo SLaks:
$(document).ready(function(){
setTimeout(showMessage, 1000);
function showMessage() {
alert('abc');
}
});
Otros consejos
Tienes un problema de alcance:. showMessage()
sólo es visible en el canto del función anónima, pero cuando el parámetro a setTimeout()
se evalúa, el tiempo de ejecución ya la izquierda del alcance
Utilice la función directamente como argumento para setTimeout()
y deshacerse del mal [TM] Evaluación cadena:
setTimeout(showMessage, 1000);
El método setTimeout
se utiliza mejor con una función y no una cadena. Por lo tanto, la mejor manera de hacer esto sería así:
$(document).ready(function() {
setTimeout(showMessage, 1000);
});
function showMessage() {
alert('abc');
}
El problema es que la función ShowMessage se declara dentro del evento listo y setTimeout ( "ShowMessage ()", 1000) lo buscará en el ámbito global. Puede mover su declaración a un ámbito global, por ejemplo, de evento listo o bien utiliza el SLaks responden: setTimeout (ShowMessage, 1000)