快速解决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 相关文章推荐
jValidate 基于jQuery的表单验证插件
Dec 12 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
Oct 14 Javascript
Javascript数组中push方法用法分析
Oct 31 Javascript
vue2 中如何实现动态表单增删改查实例
Jun 09 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
JavaScript编码小技巧分享
Sep 17 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中的多态性[译]
2011/08/02 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
浅谈php命令行用法
2015/02/04 PHP
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
Python中的Numpy入门教程
2014/04/26 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
浅析Python函数式编程
2018/10/06 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
机电一体化专业应届本科生求职信
2013/09/27 职场文书
电视购物广告词
2014/03/19 职场文书
应届生面试求职信
2014/07/02 职场文书
四风自我剖析材料
2014/09/30 职场文书
见义勇为事迹材料
2014/12/24 职场文书
实习指导老师意见
2015/06/04 职场文书
生产实习心得体会范文
2016/01/22 职场文书
2019公司管理制度
2019/04/19 职场文书