为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Javascript 中使用 setTimeout 更改样式

如何在 Javascript 中使用 setTimeout 更改样式

翻过高山走不出你 2022-10-08 17:11:44
(?)我想像动画一样将我的类名“box”从不透明度“0”更改为不透明度“1.0”,或者每隔 1000 毫秒、2000 毫秒淡化一次。3000毫秒,(X)但我不想做类似这段代码的事情,但会像jsfiddle 上的这段代码一样淡入,而不是像 jsfiddle 上的这段代码一样淡入。var DivB = document.getElementsByClassName("box");setTimeout(function(){DivB[0].style.opacity = "1"}, 1000);setTimeout(function(){DivB[1].style.opacity = "1"}, 2000);setTimeout(function(){DivB[2].style.opacity = "1"}, 3000); (/)我想让它出现延迟 1000,2000,3000 与 javascript 看起来更短,就像使用 var 'i' 到 javascript 这样的 .. jsfiddle 上的代码。var DivB = document.getElementsByClassName("box"); var i;function myFade(){for (var i=0; i<DivB.length; i++){setTimeout(function(){DivR[i].style.opacity="1"}, i*1000)}}myFade();
查看完整描述

4 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

您正在寻找setInterval


var DivB = document.getElementsByClassName("box");

var divIndex = 0;

var interval = setInterval(() => {

  DivB[divIndex].style.opacity = "1";

  divIndex++;

  if (divIndex === divB.length - 1) clearInterval(interval);

} , 1000)

基本上,这将每隔一秒触发一次,将不透明度设置divB[divIndex]为'1'。divIndex本身也会增加每个间隔。处理完所有DivB元素后,将清除间隔。


查看完整回答
反对 回复 2022-10-08
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

你可以这样做 :


var DivB = document.getElementsByClassName("box");


function myFade() {

  for (let i = 0; i < DivB.length; i++) {

    setTimeout(() => {

      DivB[i].style.opacity = "1"

    }, i * 1000)

  }

}


myFade();

.box {

  display: inline-block;

  position: relative;

  opacity: 0;

}

<div class='box'>1</div>

<div class='box'>2</div>

<div class='box'>3</div>

我建议您阅读和之间的区别varlet特别是在使用setTimeoutand的循环时setInterval



查看完整回答
反对 回复 2022-10-08
?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以从您发布的代码示例之一添加transition: all 1s;到框中的 CSS:


var DivB = document.getElementsByClassName("box");


setTimeout(function(){DivB[0].style.opacity = "1"}, 1000);

setTimeout(function(){DivB[1].style.opacity = "1"}, 2000);  

setTimeout(function(){DivB[2].style.opacity = "1"}, 3000); 

.box { display:inline-block; position:relative; opacity:0; 


transition: all 1s;}

<div class='box'>1</div><br/>

<div class='box'>2</div><br/>

<div class='box'>3</div><br/>


查看完整回答
反对 回复 2022-10-08
?
慕标5832272

TA贡献1966条经验 获得超4个赞

试试看:


function fadeElementsProgressive(className, timePerElement = 1000) {

  const divs = document.getElementsByClassName(className);

  

  for(let i = 0; i < divs.length; i++) {

    setTimeout(() => {

      divs[i].style.opacity = 1;

    }, i * timePerElement)

  }

}


fadeElementsProgressive('box');

.box { display:inline-block; position:relative; opacity:0; }

<div class='box'>1</div><br/>

<div class='box'>2</div><br/>

<div class='box'>3</div><br/>

这将创建一个获取类名并执行淡入淡出的函数。



查看完整回答
反对 回复 2022-10-08
  • 4 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号