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');
    } 
    });
War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top