Javascript 带有图像0速度onClick js的水平自动售票机
我做了这个水平的股票,但是 我需要它停止时,用户点击任何图像,直到用户再次点击,并随着放大图像,点击 我试图添加注释中的这段代码,但它完全破坏了代码Javascript 带有图像0速度onClick js的水平自动售票机,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我做了这个水平的股票,但是 我需要它停止时,用户点击任何图像,直到用户再次点击,并随着放大图像,点击 我试图添加注释中的这段代码,但它完全破坏了代码 $(function(){ var scroller = $('#scroller div.innerScrollArea'); var scrollerContent = scroller.children('ul'); scrollerContent.children().clone().appendTo(scr
$(function(){
var scroller = $('#scroller div.innerScrollArea');
var scrollerContent = scroller.children('ul');
scrollerContent.children().clone().appendTo(scrollerContent);
var curX = 0;
scrollerContent.children().each(function(){
var $this = $(this);
$this.css('left', curX);
curX += $this.outerWidth(true);
});
var fullW = curX / 2;
var viewportW = scroller.width();
// Scrolling speed management
var controller = {curSpeed:0, fullSpeed:2};
var $controller = $(controller);
var tweenToNewSpeed = function(newSpeed, duration)
{
if (duration === undefined)
duration = 600;
$controller.stop(true).animate({curSpeed:newSpeed}, duration);
};
// Pause on hover
scroller.hover(function(){
tweenToNewSpeed(0);
}, function(){
tweenToNewSpeed(controller.fullSpeed);
});
// Pause and enlarge onClick
// scroller.onClick(function(){
// tweenToNewSpeed(0);
// }, function(){
// tweenToNewSpeed(controller,fullSpeed);
// });
// Scrolling management; start the automatical scrolling
var doScroll = function()
{
var curX = scroller.scrollLeft();
var newX = curX + controller.curSpeed;
if (newX > fullW*2 - viewportW)
newX -= fullW;
scroller.scrollLeft(newX);
};
setInterval(doScroll, 20);
tweenToNewSpeed(controller.fullSpeed);
});
编辑放大功能(尝试):
使用
clearInterval
在变量中设置setInterval
var myInterval = setInterval(doScroll, 20);
然后单击添加事件以切换播放/暂停计时器:
$('.innerScrollArea ul li').click(function(){
if (!myInterval) {
myInterval = setInterval(doScroll, 20); // play again!
} else {
clearInterval(myInterval); // pause!
myInterval = null;
}
});
因为您使用的是setInterval()
查找clearInterval()
@reporter的用法,所以我在这里没听清楚。你的意思是用clearInterval()替换setInterval()?不,如果你阅读clearInterval的文档,你会发现它破坏了setInterval()的效果。你能详细说明我应该替换代码的哪一部分吗?或者将JSFIDLE粘贴到替换项上?@Scriv您已经有了它,它只是在我的答案中,请检查buttonThank You,但我无法将您的答案标记为正确答案,因为单击后会放大图像的第二部分。我正在做,所以你应该很快就能得到你的饼干,我的朋友:)
$('.innerScrollArea ul li').click(function(){
if (!myInterval) {
myInterval = setInterval(doScroll, 20); // play again!
} else {
clearInterval(myInterval); // pause!
myInterval = null;
}
});