javascript setTimeout или jQuery delay-ни один из них не работает для меня
у меня есть div
такой
<div id="sale">
........
</div>
и я попытался использовать оба
$('#sale').delay(3000).slideDown(500);
и
setTimeout(sale(), 3000);
function sale() {
$('#sale').slideDown(500);
}
но ни один из них не работает. Задержка jQuery говорит $('#sale').delay()
- это не функция, а setTimeout
как говорит бесполезно setTimeout
звонок (отсутствуют кавычки). Если я добавлю двойные кавычки вокруг sale()
вызов, он просто говорит: "продажа не определена".
почему ни то, ни другое не работает?
все, что я пытаюсь сделать, это сделать div 3 секунд после загрузки страницы.
5 ответов
в случае setTimeout
вы просто делаете это неправильно.
setTimeout(sale(), 3000); // will call sale and use the RETURN value in the callback but sale returns undefined
вам нужно передать функцию:
function sale() {
$('#sale').slideDown(500);
}
setTimeout(sale, 3000); // just pass in the reference to sale()
другой вариант:
// no difference in this case
// Note: if it were obj.sale() then you would need to do this version
// otherwise sale() will get called with the this set to window
setTimeout(function(){sale()}, 3000)
и последнее, но не менее:
setTimeout(function() { $('#sale').slideDown(500); }, 3000);
setTimeout(sale, 3000);
раньше вы проходили мимо setTimeout
возвращаемое значение sale
. Это проходит само.
в вашем первом решении кажется, что jQuery даже не загружен.
во втором коде вы должны сделать setTimeout(sale, 3000);
(опустите скобки), потому что с ними вы вызываете setTimeout с помощью возвращение of sale()
, которая составляет undefined
.