2013-12-23 79 views
0
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?如何在jQuery中的函數之外調用clearInterval?在setInterval外

+0

嘗試調用函數而不是覆蓋它;-) –

+0

@JanDvorak你可以顯示示例嗎? – TheBlackBenzKid

+0

您的'interval'變量的範圍是傳遞給jQuery的DOM就緒處理程序的匿名函數,因此在'stopIpad()'函數中不可見。修正後,它只是:'clearInterval(interval)'而不是'clearInterval = interval'。 –

回答

6

以下是示例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); 
} 
2

clearInterval是函數。你應該稱呼它,通過它你想清除作爲唯一的參數區間:

function stopIpad(){ 
    clearIntervar(interval); 
} 

這部分幾乎是正確的,interval是你還記得間隔處理要清除一個變量:

var interval = setInterval(...); 

但是,interval變量需要在iPadMovie函數之外聲明,以便它對stopIpad函數可見。在外面移動var聲明。

此外,如果播放按鈕被按下兩次會發生什麼?您設置一個新的之前,你可以停止當前間隔:

var interval; 
function iPadMovie(){ 
    clearInterval(interval); 
    interval = setInterval(...); 
} 

作爲一個方面說明,是有原因的iPadMovie等待文件準備好了?我希望它只能在那之後被調用。如果是這種情況,您可以刪除包裝。

相關問題