javascript - 我如何 'reset' 调用方法?

标签 javascript html css loops slideshow

大家好,

我目前在 javascript 上遇到了一个问题。

我有一个基于此 http://jsfiddle.net/pdb4kb1a/2 的自动幻灯片循环.

现在我还在图像中添加了箭头,这样用户也应该能够自己来回移动。 这里的问题是,当我调用 onClick() 时,它会继续重新调用 slideShow(n) 方法,而不会“中断”或“重置”另一个方法。 所以我最终得到的是在另一个循环仍在运行时调用一个循环,这会在单击箭头按钮后创建一个非常快速且迷失方向的循环。

如何在调用时重置我的 slideShow() 循环?

var imgArray = ['img/sleutels.jpg', 'img/naamborden.jpg', 'img/leer.jpg'];
var photoIndex = 2;                                                             
var photoId = document.getElementById('photoSlide');



function setIndex(n) {                          
    slideShow((photoIndex + n));                            
}


function slideShow(n) {
    photoId.className += "fadeOut";                                             
    setTimeout(appear, 500);                                                    
    photoIndex++;
    if (photoIndex == imgArray.length) {                                        
        photoIndex = 0; 
    }
    console.log(photoIndex);
   setTimeout(slideShow, 5000);                                                 
}


function appear() { 
    photoId.src = imgArray[photoIndex];     
    photoId.className = "";                     
}


slideShow();

亲切的问候

最佳答案

为了更好的结构,我会嵌套超时,然后存储超时的 id 并清除它:

var appearId, showId;

function setIndex(n) {
    slideShow((photoIndex + n));
}

function slideShow(n) {
    photoId.className += "fadeOut";
    photoIndex++;

    if (photoIndex == imgArray.length) {
        photoIndex = 0;
    }
    console.log(photoIndex);

    if (appearId) { clearTimeout(appearId) }
    appearId = setTimeout(appear, 500);
}

function appear() {
    photoId.src = imgArray[photoIndex];
    photoId.className = "";

    if (showId) { clearTimeout(showId) }
    showId = setTimeout(slideShow, 4500);
}

slideShow();

关于javascript - 我如何 'reset' 调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40105306/

相关文章:

javascript - Brain.js 将训练添加到初始训练中而无需完全重新训练

html - 正确使用 "srcset"敏感视网膜图像

css - 移动媒体查询、分辨率和 ppi 模拟器?

html - 为什么图片和文字不在同一行?

html - 如何使图像可以在不设置高度的情况下在div中重复显示

javascript - 根据百分比从一个 rgba 运行到另一个

javascript - JQuery 只访问类中的第一项

javascript - iscroll 在 phonegap 中不起作用?如何在 phonegap 中使用 iscroll

Javascript 随机图像丢失样式

javascript - jQuery 禁用/启用提交按钮