Итак, я пытался создать динамическую анимацию прокрутки, которая многократно прокручивается вверх и вниз, но которую можно остановить, как только мышь войдет в основной div веб-страницы, а затем перезапустить, когда курсор покинет вышеупомянутый div, где он будетв счет, если пользователь прокрутил себя сам, а также, если количество контента изменилось
Но все, что он делает, это правильно запускает первую анимацию, а затем просто перестает останавливаться внизу, отказываясь позволятьпользователь прокручивает все.
И когда я пытаюсь вызвать функцию остановки, он просто выдает мне ошибку «TypeError: animate (...) не определен, не может получить доступ к свойству 0 этого», и яПонятия не имею, почему.
Есть идеи?
setTimeout(function(){
if(screen.width >= 1300 && $('#animatediv')[0].scrollHeight > 700){
var screenview = document.getElementById('animatediv').clientHeight;
var to = $('#animatediv')[0].scrollHeight;
var animatetime = ((to - 700) * 800) / 80;
var used = 0;
var delay = 2000;
var userscroll = 0;
var animatescroll = 0;
var running = 0;
$('#main').mouseleave(function() {
running = 1;
userscroll = $('#animatediv').scrollTop();
setTimeout(function(){animate(screenview, to, animatetime, used, delay, userscroll, animatescroll, running)}, delay);
});
$('#main').mouseenter(function() {
running = 0;
var news = animate(screenview, to, animatetime, used, delay, userscroll, animatescroll, running)
used = news[0];
to = news[1];
$('#animatediv').stop();
animatescroll = $('#animatediv').scrollTop();
});
}
}, 600);
function animate(screenview, to, animatetime, used, delay, userscroll, animatescroll, running){
to = $('#animatediv')[0].scrollHeight;
var time = (animatetime - used) + (animatescroll - userscroll);
if(to != 0){
animateto = to - screenview;
}
else{
animateto = 0;
}
$('#animatediv').animate({ scrollTop: animateto}, time, 'linear');
setInterval(function(){
if(running == 0){
var returns = [used, to]
return returns;
}
if(used == animatetime){
if(to != 0){
to = 0;
}
else{
to = $('#animatediv')[0].scrollHeight;
}
used = 0;
setTimeout(function(){animate(screenview, to, animatetime, used, delay, userscroll, animatescroll)}, delay);
}
else{
used++;
}
}, 1);
}