function iPadMovie(id) {
$(function () {
var i = 1;
var interval = setInterval(function () {
jQuery('.animationMax img').attr({
src: 'http://jdsports.scene7.com/is/image/JDSports/127932jd' + ('0' + i).slice(-2) + '?hei=255&wid=427&resmode=sharp&op_usm=1.1,0.5,0,0&defaultImage=JDSports/sizeImageMissing'
});
i++;
if (i === 28) i = 1;
}, 100);
});
}
function playIpad(){
iPadMovie();
}
function stopIpad(){
clearInterval = interval;
}
你可以在这里看到小提琴:http://jsfiddle.net/Vv2u3/15/我希望能够停止电影并在按下播放时重新启动它。当然我可以在方法之外使用clearInterval吗?
答案 0 :(得分:8)
以下是示例link。
var interval;
function iPadMovie(id) {
$(function () {
var i = 1;
interval = setInterval(function () {
jQuery('.animationMax img').attr({
src: 'http://jdsports.scene7.com/is/image/JDSports/127932jd' + ('0' + i).slice(-2) + '?hei=255&wid=427&resmode=sharp&op_usm=1.1,0.5,0,0&defaultImage=JDSports/sizeImageMissing'
});
i++;
if (i === 28) i = 1;
}, 100);
});
}
function playIpad(){
iPadMovie();
}
这里有点解释。
首先,您的区间变量(由setInterval返回的回调函数的实际处理程序)在iPadMovie()
函数之外是不可见的,因此应该在此函数之外声明区间变量。
其次,您应该在clearInterval(handler)
函数内调用stopIpad()
函数。可以创建更多信息here。
function stopIpad(){
clearInterval(interval);
}
答案 1 :(得分:2)
clearInterval
是一个功能。您应该调用它,将要清除的间隔作为唯一参数传递给它:
function stopIpad(){
clearIntervar(interval);
}
这部分几乎是正确的,interval
是一个变量,您可以在其中记住要清除的间隔句柄:
var interval = setInterval(...);
但是,interval
变量需要在iPadMovie
函数之外声明,以便stopIpad
函数可见。将var
语句移到外面。
此外,如果按两次播放按钮会发生什么?您可以在设置新间隔之前停止当前间隔:
var interval;
function iPadMovie(){
clearInterval(interval);
interval = setInterval(...);
}
作为旁注,是否有iPadMovie
等待文件准备好的原因?我希望它只能在那之后被调用。如果是这种情况,您可以删除$(function(){...})
包装器。