快速解决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学习5 jQuery事件模型
Feb 07 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
css结合js制作下拉菜单示例代码
Feb 27 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
基于JavaScript实现带缩略图的轮播效果
Jan 12 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
Sep 27 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 8小时时间差的解决方法小结
2009/12/22 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
详解Vue.js中.native修饰符
2018/04/24 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
python实现定时提取实时日志程序
2018/06/22 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
消防先进事迹材料
2014/02/10 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
英文感谢信格式
2015/01/21 职场文书
租车协议书
2015/01/27 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android