SetTimeout funktioniert nicht, fehlt mir hier etwas?
-
20-09-2019 - |
Frage
Ich weiß, dass es ziemlich einfach ist, aber ich kann es einfach nicht zum Laufen bringen. Es werfen immer wieder "Objekt erwartet" Fehler ...
$(document).ready(function(){
setTimeout('showMessage()', 1000);
function showMessage() {
alert('abc');
}
});
Lösung
Sie haben Ihre Funktion in Zitate eingewickelt, so dass sie sie wie eine Zeichenfolge behandelt, nicht als Objekt, das es erwartet.
$(document).ready(function(){
setTimeout(showMessage, 1000);
function showMessage() {
alert('abc');
}
});
Andere Tipps
Sie haben ein Scoping -Problem: showMessage()
ist nur mit der anonymen Funktion sichtbar, aber wenn der Parameter zu setTimeout()
wird bewertet, die Laufzeit hat den Bereich bereits verlassen.
Verwenden Sie die Funktion direkt als Argument bis setTimeout()
und die Böse [tm] -Skettenbewertung loswerden:
setTimeout(showMessage, 1000);
Das setTimeout
Die Methode wird am besten mit einer Funktion verwendet, nicht mit einer Zeichenfolge. Daher wäre der beste Weg, dies zu tun:
$(document).ready(function() {
setTimeout(showMessage, 1000);
});
function showMessage() {
alert('abc');
}
Das Problem ist, dass die ShowMessage -Funktion innerhalb des Ready -Ereignisses deklariert wird, und SetTimeout ("ShowMessage (), 1000) wird im globalen Bereich danach suchen. Sie können seine Erklärung in ein globales Zielfernrohr verschieben, z. B. aus der Bereitschaft oder die SLAKS -Antwort: setTimeout (ShowMessage, 1000).