2014-12-11 55 views
0

我創建了一個函數,它使用for循環和間隔依次顯示3張圖片。我用一個間隔來等待圖像,clearInterval來停止這個功能。動畫第一次運行完美,但我在第二次運行動畫時遇到問題,並且必須始終刷新頁面。
的Javascriptjavascript間隔的問題

var currentImageIndex = 1; 
var maxImageIndex = 0; 
var images = []; 
var setUp = function() { 
    images = document.images; 
    maxImageIndex = 3; 
    currentImageIndex = 0; 
    i = 0 
} 

function change() { 
    var i; 
    if (currentImageIndex > 2) { 
    images[currentImageIndex - 1].hidden = true; 
    clearInterval(myTimer); 
    setUp(); 
    } else { 
    currentImageIndex = currentImageIndex += 1 
    } 
    for (i = 0; i < maxImageIndex; i += 1) { 
    images[i].hidden = (i !== currentImageIndex); 
    } 
} 

window.onload = function() { 
    setUp() 
}; 

function goNow() { 
    images[currentImageIndex].hidden = false; 
    var myTimer = setInterval(change, 1000); 
    setTimeout; 
} 

HTML

<button onclick="goNow()">Button</button> 
<div id="imgs"> 
<img src="http://upload.wikimedia.org/wikipedia/commons/2/2b/GoraBeluha.jpg" width = "100%" height="600" id="i1" hidden> 
<img src="../Downloads/loose-leaf-paper-clipart-paper-clip-art_1404142000.jpg" width = "100%" height="600" id="i3" hidden> 
<img src="../Downloads/img-thing.jpeg" width = "100%" height="600" id="i2" hidden> 
</div> 

我不知道這個問題是否與for循環,clearInterval或我的設置功能。任何幫助將不勝感激。

+1

'goNow()'末尾應該做什麼'setTimeout'? – Barmar 2014-12-11 01:44:52

+1

您在'goNow()'中定義了'var myTimer = ...',使這個變量侷限於這個函數的作用域。你爲什麼期望它在'change()'中可見? – 2014-12-11 01:49:28

+0

依靠'.hidden'屬性可能不是一個好主意。這是相對較新的,並且實現它的第一個IE版本是IE11。 – Barmar 2014-12-11 01:49:43

回答

0

我調試了代碼,它不能進入​​函數change()。 你可以嘗試這樣的:

var myVar=setInterval(function(){myTimer()},1000); 
    function myTimer() { 

     change(); 
    } 

我已經測試過它可以工作!