setTimeout не работает, я что-то упускаю?
-
20-09-2019 - |
Вопрос
Я знаю, что это довольно просто, но я просто не могу заставить его работать.он продолжает выдавать ошибку «Ожидаемый объект»...
$(document).ready(function(){
setTimeout('showMessage()', 1000);
function showMessage() {
alert('abc');
}
});
Решение
Вы обернули свою функцию в кавычки, поэтому она рассматривает ее как строку, а не как объект, которого он ожидает, поэтому, как сказал Slaks:
$(document).ready(function(){
setTimeout(showMessage, 1000);
function showMessage() {
alert('abc');
}
});
Другие советы
У вас есть проблема с общенациональной: showMessage()
виден только с анонимной функцией, но когда параметр к setTimeout()
Оценивается, время выполнения уже оставила прицел.
Используйте функцию непосредственно в качестве аргумента для setTimeout()
и избавиться от оценки строки зла [TM]:
setTimeout(showMessage, 1000);
А setTimeout
Метод лучше всего использовать с функцией, а не строкой. Поэтому лучший способ сделать это было бы так:
$(document).ready(function() {
setTimeout(showMessage, 1000);
});
function showMessage() {
alert('abc');
}
Проблема в том, что функция showMessage объявлена внутри события готовности, и setTimeout("showMessage()", 1000) будет искать ее в глобальной области видимости.Вы можете переместить его объявление в глобальную область видимости, например.out ofready или используйте ответ SLaks:setTimeout (showMessage, 1000)