如何在jQuery中调用函数外的clearInterval? 在setInterval之外
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吗?
这是示例链接 。
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()
函数之外是不可见的,因此应该在此函数之外声明区间变量。 其次你应该在stopIpad()
函数中调用clearInterval(handler)
stopIpad()
函数。 可以在此处创建更多信息。
function stopIpad(){ clearInterval(interval); }
clearInterval
是一个函数。 您应该调用它,将要清除的间隔作为唯一参数传递给它:
function stopIpad(){ clearIntervar(interval); }
这部分几乎是正确的, interval
是一个变量,你要记住要清除的间隔句柄:
var interval = setInterval(...);
但是,需要在iPadMovie
函数之外声明interval
变量,以便它对stopIpad
函数可见。 将var
语句移到外面。
此外,如果按两次播放按钮会发生什么? 您可以在设置新间隔之前停止当前间隔:
var interval; function iPadMovie(){ clearInterval(interval); interval = setInterval(...); }
作为旁注, iPadMovie
等待文件准备好? 我希望它只能在那之后被调用。 如果是这种情况,您可以删除$(function(){...})
包装器。