gpt4 book ai didi

javascript - setTimeout 似乎没有调用该函数

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

在我添加 setTimeout 之前,代码运行得很好。现在,无论我如何尝试调用 setTimeout 中的函数 ( setTimeout(function(){fadeOut()},1000); setTimeout("fadeOut()",1000); 等)似乎根本没有达到该功能。

我是 Javascript 新手,因此非常感谢您的帮助 =]

JavaScript 代码:

var slideArray = ["slide1","slide2","slide3","slide4","slide5","slide6"];
var currentSlide = null;
var current = null;
var done = false;

function fade(newSlide)
{
if(currentSlide === null)
{
currentSlide = slideArray[0];
document.getElementById(currentSlide).style.opacity = 1.0;

for(var i=1;i<slideArray.length;i++)
document.getElementById(slideArray[i]).style.opacity = 0.0;
}

current = document.getElementById(currentSlide);
done = false;
do
{
window.setTimeout(fadeOut,1000);
} while(done == false);

currentSlide = newSlide;
current = document.getElementById(currentSlide);
done = false;

do
{
window.setTimeout(fadeIn,1000);
} while(done == false);
}

function fadeOut()
{
if(parseFloat(current.style.opacity)-0.1>.0000001)
{
current.style.opacity = parseFloat(current.style.opacity) -0.1;
done = false;
}
else
{
current.style.opacity = 0.0;
done = true;
}
}

function fadeIn()
{
if(0.9-parseFloat(current.style.opacity)>.0000001)
{
current.style.opacity = parseFloat(current.style.opacity)+0.1;
done = false;
}
else
{
current.style.opacity = 1.0;
done = true;
}
}

最佳答案

您不能使用此结构:

do
{
window.setTimeout(fadeIn,1000);
} while(done == false);

因为 setTimeout() 中的代码稍后运行,所以您的 did 值永远不会改变,并且这个循环将永远运行。而且,只要它运行,setTimeout() 也永远不会触发(因为 javascript 是单线程的)。

相反,如果还没有完成,您应该做的是从 fadeIn() 函数启动下一个 setTimeout(fadeIn, 1000)

function fadeOut()
{
if(parseFloat(current.style.opacity)-0.1>.0000001)
{
current.style.opacity = parseFloat(current.style.opacity) -0.1;
setTimeout(fadeOut, 1000);
}

else
{
current.style.opacity = 0.0;
}
}

关于javascript - setTimeout 似乎没有调用该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696685/

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