2014-12-11 2 views
0

Я создал функцию, которая показывает 3 изображения один за другим с использованием цикла for и интервала. Я использовал интервал ожидания между изображениями и clearInterval, чтобы остановить функцию. Анимация выполняется в первый раз, но у меня возникают проблемы с запуском анимации во второй раз и всегда нужно обновлять страницу.
JavascriptНеисправность с интервалом javascript

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> 

Я понятия не имею, является ли проблема с для петель, clearInterval или моя функция нАлАдкА. Любая помощь будет принята с благодарностью.

+1

Что такое 'setTimeout' в конце' goNow() 'должен делать? – Barmar

+1

Вы определили 'var myTimer = ...' в 'goNow()' делая эту переменную локальной для области этой функции. Почему вы ожидаете, что это будет видно в 'change()'? –

+0

Вероятно, не стоит полагаться на атрибут '.hidden'. Он относительно новый, и первая версия IE, которая его реализует, - IE11. – Barmar

ответ

0

Я отлаживаю коды, он не может войти в функцию change(). Вы можете попробовать так:

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

     change(); 
    } 

Я проверил это может работать!

Смежные вопросы