我如何才能使我的旋转木马自动播放,直到用户与之交互
How can I make my carousel auto play until a user interacts with it?
目前,carousel不做任何事情,除非用户通过图像容器下面的左箭头或右箭头与它交互。我正在尝试添加一个函数,该函数将使幻灯片自动滑动,直到用户与这些箭头交互,在此之后,该函数将停止。
下面是允许用户滚动幻灯片的当前代码://Next Arrow Functionality
$('.arrow-next').click(function (e) {
var currentSlide = $('.active-slide');
var nextSlide = currentSlide.next();
var currentDot = $('.active-dot');
var nextDot = currentDot.next();
if (nextSlide.length == 0) {
nextSlide = $('.slide').first();
nextDot = $('.dot').first();
}
currentSlide.fadeOut(1000).removeClass('active-slide');
nextSlide.fadeIn(1000).addClass('active-slide');
currentDot.removeClass('active-dot');
nextDot.addClass('active-dot');
e.preventDefault();
});
//Previous Arrow Click Functionality
$('.arrow-prev').click(function (e) {
var currentSlide = $('.active-slide');
var prevSlide = currentSlide.prev();
var currentDot = $('.active-dot');
var prevDot = currentDot.prev();
if (prevSlide.length == 0) {
prevSlide = $('.slide').last();
prevDot = $('.dot').last();
}
currentSlide.fadeOut(1000).removeClass('active-slide');
prevSlide.fadeIn(1000).addClass('active-slide');
currentDot.removeClass('active-dot');
prevDot.addClass('active-dot');
e.preventDefault();
});
提前感谢!
首先提取出更改幻灯片的函数。
function nextSlide () {
var currentSlide = $('.active-slide');
var nextSlide = currentSlide.next();
var currentDot = $('.active-dot');
var nextDot = currentDot.next();
if (nextSlide.length == 0) {
nextSlide = $('.slide').first();
nextDot = $('.dot').first();
}
currentSlide.fadeOut(1000).removeClass('active-slide');
nextSlide.fadeIn(1000).addClass('active-slide');
currentDot.removeClass('active-dot');
nextDot.addClass('active-dot');
}
function prevSlide () {
var currentSlide = $('.active-slide');
var prevSlide = currentSlide.prev();
var currentDot = $('.active-dot');
var prevDot = currentDot.prev();
if (prevSlide.length == 0) {
prevSlide = $('.slide').last();
prevDot = $('.dot').last();
}
currentSlide.fadeOut(1000).removeClass('active-slide');
prevSlide.fadeIn(1000).addClass('active-slide');
currentDot.removeClass('active-dot');
prevDot.addClass('active-dot');
}
还要创建一个新变量来跟踪用户是否已经进行了交互。
var userHasInteracted = false;
然后重构click处理程序以使用新创建的函数,并设置变量。
$('.arrow-next').click(function (e) {
e.preventDefault();
userHasInteracted = true;
nextSlide();
});
$('.arrow-prev').click(function (e) {
e.preventDefault();
userHasInteracted = true;
prevSlide();
});
然后添加逻辑以自动推进幻灯片。
function autoAdvance () {
// Stop the loop if the user has interacted
if (userHasInteracted) return ;
// Jump to the next slide
nextSlide();
// Run me again in 8 seconds
setTimeout(autoAdvance, 8000);
}
// Advance the slide in 8 seconds
setTimeout(autoAdvance, 8000);
相关文章:
- Javascript没有't更新DOM,直到用户交互
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- Ajax 调用在 IOS 中的用户交互之前不起作用
- 在C#中,我如何对客户端用户交互和javascript(jQuery)代码进行单元测试
- JavaScript/Wicket:如何显示阻止用户交互的覆盖
- 对用户交互进行单选按钮检查
- 谷歌应用程序脚本:如何在没有用户交互的情况下调用绑定到处理程序的函数
- 用户交互启用了 Javascript
- 设置用户交互计时器
- HTML5 + JS:跟踪用户交互
- 是否可以像真实用户交互那样进行JavaScript操作来更改文档的activeElement
- HTML,JS:加载音频是否需要在移动浏览器上进行用户交互
- 有没有办法防止用户交互暂停动画
- 跟踪网站上的用户交互
- 我可以在手机上自动播放上一页用户交互的音频吗
- 从web应用程序,如何在没有用户交互的情况下在客户端计算机上运行exe
- 如何确定onStateChange事件是由API还是用户交互触发的
- 任何不需要用户交互的可视化库
- 检测任何用户交互
- 用户交互后,后台出现Javascript弹出窗口