快速解决js动态改变dom元素属性后页面及时渲染的问题


Posted in Javascript onJuly 06, 2016

今天实现一个进度条加载过程,dom结构其实就是两个div

<div class="pbar">
 <div class="ui-widget-header" id="percent_bar" style="width: 23%;"></div>
 </div>

控制里层div的宽width属性,就能实现进度条往前走的效果。

我的进度条是显示下载文件的进度,简单实现一共100个文件的话,下载一个就1%,下载了20个就走到20%。于是代码实现如下:

var fileCount=fileList.length();
 fileList.foreach(function(i,obj){
   ........//下载文件
  document.getElementById("percent_bar").style.width=i/fileCount*100 + "%";//改变内层div的宽度
 })

但是你会看到文件一个个下载下来,但进度始终没有动一动。这是因为js逻辑会优先执行,而页面渲染会在js执行结束后才进行的,这样就无法看到一个正常的进度条了。

怎么能让js逻辑执行等一等页面渲染呢?

var i=0;
var fileCount=fileList.length();
var loop = function () {
 if(i>fileCount)//退出循环
return;
  .....//下载文件
  i++;
  document.getElementById("percent_bar").style.width=i/fileCount*100+"%";

 //下一步循环  that.loopId = window.setTimeout(loop, 0);7 }
that.loopId = window.setTimeout(loop, 0);

通过settimeout函数可以实现进度条动态效果了。

以上这篇快速解决js动态改变dom元素属性后页面及时渲染的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中的escape及unescape函数的php实现代码
Sep 04 Javascript
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
Table冻结表头示例代码
Aug 20 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
jQuery实现的简单悬浮层功能完整实例
Jan 23 Javascript
js模态对话框使用方法详解
Feb 16 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
vue+springmvc导出excel数据的实现代码
Jun 27 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
Mar 08 Javascript
jQuery 3.0十大新特性
Jul 06 #Javascript
Javascript 基础---Ajax入门必看
Jul 06 #Javascript
jQuery获取浏览器类型和版本号的方法
Jul 05 #Javascript
jQuery事件委托之Safari
Jul 05 #Javascript
一道优雅面试题分析js中fn()和return fn()的区别
Jul 05 #Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 #Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
Jul 05 #Javascript
You might like
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python执行get提交的方法
2015/04/29 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
应届生.NET方向面试题
2015/05/23 面试题
师范应届生语文教师求职信
2013/10/29 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
神秘岛读书笔记
2015/07/01 职场文书
2015党建工作简报
2015/07/21 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
运动会广播稿200字
2015/08/19 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python