javascript - 淡出前图片更改 - setTimeout 不起作用

标签 javascript jquery

我正在制作一个可以工作的照片 slider ,但我在更改箭头时遇到问题。当您单击箭头时,图片应该淡出、更改,然后新图片淡入,但我的代码在执行淡入淡出动画后首先更改图片。帮助

var slidenumber = Math.floor(Math.random() * 5) + 1;
var timerforslide = 0;
var timerforfade = 0;

function hideSlide() {
    $("#slide").stop();
    $("#slide").fadeOut(500);
}

function changeSlide() {
    resetSlideTimers();
    slidenumber++;
    if (slidenumber > 5) slidenumber = 1;
    if (slidenumber<1) slidenumber = 5;
    timerforfade = setTimeout("hideSlide()", 4500);
    timerforslide = setTimeout("changeSlide()", 5000);
    $("#slide").fadeIn(500);
    var file = "<img src=\"img/slide" + slidenumber + ".png\" width =\"100%\" height=\"300px\" /> "
    document.getElementById("slide").innerHTML = file;



}

function resetSlideTimers() {
    clearTimeout(timerforfade);
    clearTimeout(timerforslide);
}

function nextSlide() {
    $("#slide").stop();
    resetSlideTimers();
    hideSlide();
    setTimeout(1000, changeSlide());

}

function previousSlide() {
    $("#slide").stop();
    resetSlideTimers();
    slidenumber = slidenumber - 2;
    hideSlide();
    setTimeout(500, changeSlide());
}

最佳答案

当您创建 setTimeout 调用时,第一个参数可以是匿名函数,也可以是对另一个函数的引用。第二个参数是调用该函数所需的时间。

因此,您的两个函数调用设置如下:

timerforfade = setTimeout("hideSlide()", 4500);
timerforslide = setTimeout("changeSlide()", 5000);

无效,因为您传递的是字符串而不是函数。并且您不想使用括号,因为这将立即调用该函数,而无需等待实际时间流逝发生。将它们更改为:

timerforfade = setTimeout(hideSlide, 4500);
timerforslide = setTimeout(changeSlide, 5000);

请记住,它们始终是匿名函数或对函数的引用。切勿放置括号,除非应在该执行行立即调用它。

并且在 nextSlidepreviousSlide 中创建的 setTimeout 是相反的并且有括号。将它们分别更改为:

//Next slide function
setTimeout(changeSlide, 1000);
//Previous slide function
setTimeout(changeSlide, 500);

我无法验证您现在的逻辑是否正确,但这些都是一些直接错误。

关于javascript - 淡出前图片更改 - setTimeout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415500/

相关文章:

javascript - .load 和 .getScript 之后的 jQuery 绑定(bind)仅在警报之后有效

javascript - WebStorm Unresolved 变量警告

javascript - 如何在 jQuery 中设置日期格式

javascript - Angular 单元测试 - 单击指令未触发

javascript - 隐藏除当前正在写入/显示的元素之外的所有元素实例

javascript - 如何在窗口调整大小时使用 jquery 水平居中相对 div?

javascript - 如何使用 javascript 跟踪在解析分析中打开的应用程序?

javascript - 如何使用行索引 javascript 禁用 getelement()

java - Glassfish 服务器在启动时显示错误

javascript - 导航 CSS 样式不起作用