快速解决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 相关文章推荐
日期函数扩展类Ver0.1.1
Sep 07 Javascript
Javascript加载速度慢的解决方案
Mar 11 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
Mar 24 Javascript
JavaScript阻止回车提交表单的方法
Dec 30 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
Feb 20 Javascript
jquery dataTable 后台加载数据并分页实例代码
Jun 07 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
May 09 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
vue中@change兼容问题详解
Oct 25 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
python logging类库使用例子
2014/11/22 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
写自荐信要注意什么
2013/12/26 职场文书
给交警的表扬信
2014/01/12 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
2014年教学工作总结
2014/11/13 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
react antd实现动态增减表单
2021/06/03 Javascript
nginx请求限制配置方法
2021/07/09 Servers
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python
2022微信温控新功能上线
2022/05/09 数码科技