快速解决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 相关文章推荐
Jquery实战_读书笔记2 选择器
Jan 22 Javascript
javascript forEach通用循环遍历方法
Oct 11 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
使用jQuery.wechat构建微信WEB应用
Oct 09 Javascript
JavaScript实现将文本框的值插入指定位置的方法
Aug 13 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
DWR3 访问WEB元素的两种方法实例详解
Jan 03 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
vue中实现图片压缩 file文件的方法
May 28 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 DB 数据库连接类定义与用法示例
2019/03/11 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
供货协议书
2014/04/22 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
工厂见习报告范文
2014/10/31 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
教师节随笔
2015/08/15 职场文书
编写python程序的90条建议
2021/04/14 Python