Написал скрипт, но он работает криво. Когда слайды автоматически меняются(каждые 6 сек), то все работает отлично, то есть у нас заполняется загрузка от 0% - 100%, но когда мы нажмем на prev или next кнопку, то полоса загрузки не обнуляет предыдущее время, но и одновременно начинает считать с 0%, то есть у нас получается несколько полос в одной, как это можно исправить? js:
var owl = $('#sliderTop');
function timeCounter() {
var numSec = 0,
totalTime = 0,
loader = 0;
setInterval(counter, 60);
function counter() {
if (numSec > 99) {
return false;
} else {
totalTime += 1;
numSec = parseInt(totalTime);
loader = numSec + "%";
}
$(".load").css("width", loader);
};
}
owl.on('initialized.owl.carousel', function(event) {
timeCounter();
});
owl.owlCarousel({
items: 1,
autoplay: true,
autoplayTimeout: 6000,
mouseDrag: false,
loop: true,
nav: true,
navText : ["<i class='fa fa-angle-up'></i>","<i class='fa fa-angle-down'></i>"],
animateOut: 'fadeOut',
dots: true,
responsive : {
768 : {
dots: false
}
}
});
$("#sliderTop .owl-prev").after("<div class='load-time'><div class='load'></div></div>");
owl.on('changed.owl.carousel', function(property) {
timeCounter();
});
Вам нужно отменить предыдущий таймер, прежде, чем создавать новый:
clearInterval(st)
st= setInterval(counter, 60);
var owl = $('#sliderTop');
var st;
function timeCounter() {
var numSec = 0,
totalTime = 0,
loader = 0;
clearInterval(st)
st= setInterval(counter, 60);
function counter() {
if (numSec > 99) {
return false;
} else {
totalTime += 1;
numSec = parseInt(totalTime);
loader = numSec + "%";
}
$(".load").css("width", loader);
};
}
owl.on('initialized.owl.carousel', function(event) {
timeCounter();
});
owl.owlCarousel({
items: 1,
autoplay: true,
autoplayTimeout: 6000,
mouseDrag: false,
loop: true,
nav: true,
navText: ["<<<", ">>>>"],
animateOut: 'fadeOut',
dots: true,
responsive: {
768: {
dots: false
}
}
});
$("#sliderTop .owl-prev").after("<div class='load-time'><div class='load'></div></div>");
owl.on('changed.owl.carousel', function(property) {
timeCounter();
});
.load{border-top:4px solid red}
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.js"></script>
<div class="owl-carousel" id="sliderTop">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно получить аудио-стрим микрофона (не звука во вкладке, а именно микрофона) через расширение ChromeОбычный navigator
Приветствую! У меня на IIS 10 есть 10 JS файлов по 5-10 КБПри заходе на сайт (Если пользователь не имеет кэша (То есть CTRL+ F5)) сайт грузит по 10-20 секунд...