JavaScript 动画卡住,仅显示最终结果

标签 javascript performance

我正在尝试在 JavaScript 中摆弄并创建一个小的 fadeOut 函数, 这就是我想到的:

function fadeOut(id, time){
  var elem = document.getElementById(id);
   elem.style.opacity = 1;
   var opc = 1;
   while(opc >= (1/time)){
      opc -= (1/time);
      console.log(opc);
      elem.style.opacity = opc;
   }
   elem.style.opacity = 0;
}

但这不会“实时”显示 div 的不透明度,而是显示最终结果,即 opacity = 0;
我在这里测试过:

fadeOut("hello",10000);
document.getElementById("hello").style.opacity = 1;
fadeOut("hello",10000);
document.getElementById("hello").style.opacity = 1;
fadeOut("hello",10000);
document.getElementById("hello").style.opacity = 1;

计算需要很长时间,只有计算完成后才会转储结果,
在计算时没有无缝地显示它,
我该如何解决这个问题?

最佳答案

您需要设置计时器,因为在您的函数完成且事件处理程序可以运行之前,UI 不会更新。

关于JavaScript 动画卡住,仅显示最终结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863941/

相关文章:

Javascript - 递归循环,同时跟踪父子关系

php - 如何将 php 值传递给 javascript 然后传递给 ajax?

javascript - 是否需要在 iron-router@1.0.0-pre3 的服务器代码中定义 RouteControllers

python - 从列表的给定索引中获取邻居数。给定解决方案的最佳实践或有效性能是什么?

php - 为什么 echo 比 print 快?

javascript - 我可以用 Javascript 为 hubot 编写脚本吗?

javascript - 如何避免在 anchor (<a></a>)标签点击时刷新页面?

javascript - 提升 JavaScript 性能的限制是什么?

java - @BatchSize 但在获取 @ManyToOne 关联时有很多往返

Java:获取输入整数数组的最有效方法