gpt4 book ai didi

javascript - 如何运行一个调用函数的函数,然后再调用下一个函数。创建回调函数

转载 作者:行者123 更新时间:2023-12-02 19:27:50 24 4
gpt4 key购买 nike

当用户单击任何图像时,所有图像 (images_holder) 都会慢慢淡出。然后在它消失后,另一个图像淡入,然后 3 秒后该图像淡出。之后,images_holder 再次淡入。我的问题是,在推子完成之前,第二步函数已经在运行。

我想要的是完成第一步并完成推子功能,然后第二步将运行。一直在尝试创建此回调,但没有成功。

这是我的 html

<div id="container">
<!--<img src="images/background.jpg"/>-->
<div id="faces_holder">
<img id="face1" onclick="loadUnload(1)" src="images/face_03.png" width=350; height=656;/><img id="face2" onclick="loadUnload(2)" src="images/face_04.png" width=350; height=656;/><img id="face3" onclick="loadUnload(3)" src="images/face_05.png" width=350; height=656;/><img id="face4" onclick="loadUnload(4)" src="images/face_06.png" width=350; height=656;/><img id="face5" onclick="loadUnload(5)" src="images/face_07.png" width=350; height=656;/>
</div>
<div id="pop_face"><img id="popface_img" src=""/></div>
</div>

这是我的 JavaScript:

    var id = "";
var kindface=0;
var fadeIn;
var counterValue;
var objHolder;


function loadUnload(kindface){
//FADEIN FADEOUT
function fader() {
if(fadeIn == true){
counterValue++;
//setPoint = 9;
}else{
counterValue--; // update parameters
//console.log("hit");
}
objHolder.style.opacity = "0."+counterValue // show frame
if (counterValue == setPoint){ // check finish condition
clearInterval(id);
console.log("end fader");
}
}

//FADEOUT

更新

我刚刚添加了第三步,我将如何实现它?我想在第二步完成推子功能后运行第三步?

function thirdstep() {
console.log("begin second step: ")

fadeIn = true;
counterValue = 0;
setPoint = 9;
objHolder = document.getElementById("popface_img");
objHolder.src = "images/"+ kindface +".png";

id = setInterval(fader, 100); // draw every 100ms
console.log("end second step: ")
}

function secondStep() {
console.log("begin second step: ")

fadeIn = true;
counterValue = 0;
setPoint = 9;
objHolder = document.getElementById("popface_img");
objHolder.src = "images/"+ kindface +".png";

id = setInterval(fader, 100); // draw every 100ms
console.log("end second step: ")
}

function firstStep(callback) {
console.log("begin first step: ")

fadeIn = false;
objHolder = document.getElementById("faces_holder");
counterValue = 10;
setPoint = 0;


id = setInterval(callback, 100); // draw every 100ms
console.log("end first step: ")
secondStep();

}


//RUN FIRST STEP FUNCTION
console.log("BEGIN process ")
firstStep(fader);

console.log("END OF ALL process ")

}

</script>

最佳答案

在您的代码中:

> id = setInterval(callback, 100); // draw every 100ms
> console.log("end first step: ")
> secondStep();

secondStep 立即调用,它不会等待 setInterval 建立的序列完成。您需要从fader调用secondStep,例如

function loadUnload(kindface){

[...]
function fader() {

if (counterValue == setPoint){ // check finish condition
clearInterval(id);
console.log("end fader");

// now call secondStep
secondStep();
}
}
[...]
}

关于javascript - 如何运行一个调用函数的函数,然后再调用下一个函数。创建回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838027/

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