快速解决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 相关文章推荐
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
详解jQuery的表单验证插件--Validation
Dec 21 Javascript
js编写选项卡效果
May 23 Javascript
原生js实现Flappy Bird小游戏
Dec 24 Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 Javascript
JS异步处理的进化史深入讲解
Aug 25 Javascript
js实现查询商品案例
Jul 22 Javascript
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
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创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
php实现的操作excel类详解
2016/01/15 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
户外用品商店创业计划书
2014/01/29 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
村级个人对照检查材料
2014/08/22 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL