Другие языки программирования и технологии

javascript, jquery :почему у меня функция setInterval() работает только один раз????(код внутри)

У вас там хрень с таймером, функциями, которые выполняются после анимации.. .
Цикл-то запускается нормально (попробуйте в функции banner() в консоль что-то выводить - например console.log('animate!'); будет выводить вам эту строку в консоль каждую секунду) , но анимации блокируются - интервал между циклами 1 секунда, а длительность анимации - 5 секунд с копейками.
Лучше так:

$(document).ready(function(){
intervalId=setTimeout(function(){ banner(); },1000);
});

function banner(){
$('#jag').animate({left: "500px"}, 5000,function(){
$('#jag').hide();
$('#headp').text("Jaguar - The best and coolest car ever!");
$('#headp').animate({fontSize:"4em"},"slow",function(){
$('#jag').animate({left:"0px"},0,function(){
$('#headp').text("");
$('#jag').show();
banner();
}
);
});
});
}

Так banner() будет точно запускаться после окончания цикла анимаций.
Хотя, я так и не понял, какого эффекта вы хотели добиться...) )
А еще правильнее так, наверное (если нужна задержка в секунду между циклами) :

$(document).ready(function(){
banner();
});
function banner(){
$('#jag').delay(1000).animate({left: "500px"}, 5000,function(){
$('#jag').hide();
$('#headp').text("Jaguar - The best and coolest car ever!");
$('#headp').animate({fontSize:"4em"},"slow",function(){
$('#jag').animate({left:"0px"},0,function(){
$('#headp').text("");
$('#jag').show();
banner();
}
);
});
});
}
ВА
Владимир Аблязов
60 969
Лучший ответ
Ренат Тажибаев спасибо за ответ. у меня нет проблемы с запуском анимации (картинка двигается, исчезает и на её месте появляется надпись). временный интервал я менял - и разницы нет как раз, проблема в том что после первого витка (картинка+надпись), функция перестаёт работать
Ну если код идет в таком же порядке- то вы определяете функцию setInterval() раньше, чем даже объявлена banner(), не говорю уже за ее определение.
Это имхо, так как я не программист javascript
попробуйте так:
$(document).ready(function()
{
function banner()
{
$('#jag').animate({left: "500px"}, 5000,function()
{
$('#jag').hide();
$('#headp').text("Jaguar - The best and coolest car ever!");
$('#headp').animate({fontSize:"4em"},"slow",function(){
$('#jag').animate({left:"0px"},0,function(){
$('#headp').text("");
$('#jag').show();
}
);});
});
}
intervalId=setInterval(banner(),1000);
});
Ренат Тажибаев не помогло...
$().ready(function()
{
setInterval("banner()",1000);
});
Tigran Hovhannisyan
Tigran Hovhannisyan
1 390
Ренат Тажибаев не помогло

Похожие вопросы