gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:01:03 25 4
gpt4 key购买 nike

大家好,

我目前在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com