gpt4 book ai didi

Javascript - 我写的淡入淡出图像的函数有问题

转载 作者:行者123 更新时间:2023-11-30 13:37:23 25 4
gpt4 key购买 nike

所以我编写了一个函数,其目的是将图像的不透明度从 0 淡化到 1。这意味着每 100 毫秒将不透明度增加 0.1,总持续时间为 1 秒。该函数将调用,它会增加不透明度,但它似乎只是等待 100 毫秒并立即将不透明度设置为 1。我哪里出错了?以下是与应该淡入的功能和图像相关的代码片段。感谢任何输入 =)

Javascript:

function setOpacity(id, num) {
document.getElementById(id).style.opacity = num;
}

function imagePopUp(id){
var step = 0.0;

for(var i = 1; i <= 10; i++){
step = i / 10;
var num = step.toFixed(1);
setTimeout(function(){setOpacity(id, num);}, 100);

}
}

HTML:

<div id ="shadowWrapper">
<div id ="imageContainer">
<img class ="sideImages" src ="images/mini_race1.jpg" onclick ="imagePopUp('image1')"></img>
<img class ="sideImages" src ="images/mini_race2.jpg" onclick ="imagePopUp('image2')"></img>
<img class ="sideImages" src ="images/mini_race3.jpg" onclick ="imagePopUp('image3')"></img>
</div>

<img class ="hiddenImages" id ="image1" src ="images/race_around_ireland_01.jpg"></img>
<img class ="hiddenImages" id ="image2" src ="images/race_around_ireland_02.jpg"></img>
<img class ="hiddenImages" id ="image3" src ="images/race_around_ireland_03.jpg"></img>
</div>

CSS:

#imageContainer {
position: absolute;
margin-top: 10px;
width: 200px;
height: 450px;
left: 600px;
}

.sideImages {
display: block;
width: 150px;
height: 112px;
border: 1px #94b62d solid;
margin-top: 20px;
margin-left: auto;
margin-right: auto;
}

.hiddenImages {
display: block;
position: absolute;
border: 1px black solid;
left: 100px;
opacity: 0.0;
}

最佳答案

您正在排队所有回调以从现在开始执行 100 毫秒。 setInterval 不“堆叠”或“排队”功能。

此外,相同的 num 变量会在您创建的闭包中被捕获,并且在每个回调中执行时它将具有其最终值。

解决这两个问题的方法是替换

setTimeout(function(){setOpacity(id, num);}, 100);

setTimeout(function(inum) {
return function(){setOpacity(id, inum);};
}(num), i * 100);

关于Javascript - 我写的淡入淡出图像的函数有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4260608/

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