简单进度条JS实现

问题描述:

再开发项目过程中,遇到一个问题,就是执行一个过程的时候,这个过程可能比较长,比如查询,因为查询的内容比较多,所以在查询过程中需要给客户一个比较好的体验,所以决定给客户一个进度条。

网上搜索,似乎都并不是很管用,都是什么文件上传之类进度,太过复杂。

 

问题解决:

 

在页面上增加一个类似如下的

  1. <tr id="process" style="display: none";>
  2.   <td colspan="4" align="center" valign="top">
  3.     <font color="#006699" size="2" face="宋体">正在查询中,请稍等...</font>
  4.     <br>
  5.     <input type="text" id="processBars" size=46 />
  6.   </td>
  7. </tr>

然后写一个js方法实现,只是用了一个循环方法,调用的时候会循环,

 

  1. /**
  2. *进度条
  3. */
  4. var bar = 0;
  5. var line = "||";
  6. var amount = "||";
  7. function processBar() {
  8.     barbar = bar + 2;
  9.     amountamount = amount + line;
  10.     document.getElementById("processBars").value = amount;
  11.     if (bar < 50) {
  12.         setTimeout("processBar()", 100);
  13.     } else {
  14.         bar = 0;
  15.         amount = line;
  16.         processBar();
  17.     }
  18. }
  19. function getProcessBar() {
  20.     document.getElementById("process").style.display = "block";
  21.     processBar();
  22. }

那么你只要在调用查询这个方法的时候去调用上面的 getProcessBar()方法即可,如下

 

  1. <td width="100%" colspan="4" align="right" class="textline">
  2.                         <input name="queryBtn" type="button" class="off" id="queryBtn"
  3.                             onMouseOver="change_bg(this)" onMouseOut="change_back(this)"
  4.                             value="查询" onclick="doQuery();">
  5.                         <input name="clearBtn" type="button" class="off" id="clearBtn"
  6.                             onMouseOver="change_bg(this)" onMouseOut="change_back(this)"
  7.                             value="重置" onclick="doClear();">
  8.   </td>

 

  1. function doQuery(strSrc)
  2. {   
  3.       getProcessBar();
  4.       form.action.value = "list";
  5.       form.submit();
  6. }   

当然我们调用查询完之后,会重新提交页面,就不会再跑那个循环方法。

 

后记:

只是个简单的方法,或许在别的地方不适用,不过在我们这个项目刚好适用,呵呵,简单就可以~

 

 

<think>嗯,用户想要查找关于前端实现进度条的教程和示例代码。我需要先回顾一下相关的知识,然后结合提供的引用内容来组织回答。 首先,用户提到的引用中有几个相关的资料。引用[2]提到了Nprogress,这是一个页面加载进度条的库,使用起来比较简单。引用[3]是关于Springboot集成WebSocket实现实时进度条的,这可能涉及到后端和前端的配合。另外,用户可能还需要基础的HTML/CSS/JavaScript实现方法,虽然引用中没有直接提到,但作为常见的方法应该包含进去。 接下来,我应该分步骤来回答。首先介绍基础的HTML/CSS进度条,因为这是最基础的方式,适合新手。然后提到使用Nprogress这样的库来简化工作,特别是针对页面加载或路由切换的场景。接着,如果有涉及后端通信的情况,比如文件上传或长时间任务,可能需要使用WebSocket或者AJAX轮询来实时更新进度条,这里可以结合引用[3]的WebSocket示例。 需要注意用户可能需要的不同场景:静态进度条、动态加载进度条、与后端交互的实时进度条。每个部分给出示例代码,并确保代码正确,比如使用正确的HTML结构和JavaScript函数。同时,要提到如何根据实际情况调整,比如WebSocket的消息处理。 另外,用户可能关心如何将这些技术应用到实际项目中,比如文件上传时的进度显示,或者页面跳转时的加载反馈。需要确保示例代码简洁易懂,并给出关键注释,解释各部分的作用。 最后,生成的相关问题需要覆盖不同方面,比如性能优化、样式定制、与后端集成等,这样用户可以根据需求进一步探索。还要检查引用是否正确,比如引用[2]和[3]对应的内容是否准确,并确保没有遗漏重要的实现方法。</think>### 前端实现进度条的常见方法及示例 #### 1. 基础HTML/CSS实现静态进度条 ```html <div class="progress-bar"> <div class="progress" style="width: 30%"></div> </div> <style> .progress-bar { width: 300px; height: 20px; background: #eee; border-radius: 10px; overflow: hidden; } .progress { height: 100%; background: #4CAF50; transition: width 0.3s ease; } </style> ``` #### 2. 使用NProgress实现页面加载进度条[^2] ```javascript // 安装:npm install nprogress import NProgress from 'nprogress'; import 'nprogress/nprogress.css'; // 路由切换时使用(如Vue Router) router.beforeEach((to, from, next) => { NProgress.start(); next(); }); router.afterEach(() => { NProgress.done(); }); ``` #### 3. 文件上传实时进度条(XMLHttpRequest) ```javascript const xhr = new XMLHttpRequest(); xhr.upload.addEventListener('progress', (e) => { if (e.lengthComputable) { const percent = (e.loaded / e.total) * 100; document.querySelector('.progress').style.width = percent + '%'; } }); ``` #### 4. WebSocket实时进度集成[^3] ```javascript // 前端WebSocket连接 const ws = new WebSocket('ws://localhost:8080/progress'); ws.onmessage = (event) => { const data = JSON.parse(event.data); document.getElementById('progress').style.width = data.progress + '%'; }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值