JavaScript实现审核流程状态的动态显示进度条


Posted in Javascript onMarch 15, 2017

对于有很多流程的东西,我们希望能够根据不同的阶段,用流程条对应地进行显示,如下所示:

JavaScript实现审核流程状态的动态显示进度条

以上功能对应的html代码如下:

<div class="col-md-12 col-lg-3"> 
   <div class="panel panel-default"> 
    <div class="tit06"> 
     <h3>漏洞处理状态</h3> 
    </div> 
    <div class="status"> 
     <ul> 
      <li name="__tab_step1_pub" class="top active"> 
        <div class="info" id="tab_step1"> 
        <h4> 
         <div class="heading"></div> 
         待审阅</h4> 
        <p class="text" >漏洞已提交,等待厂商审阅</p>  
        </div> 
      </li> 
      <li name="__tab_step2_pub" > 
        <div class="info" id="tab_step2"> 
        <h4> 
         <div class="heading"></div> 
         待确认</h4> 
        <p class="text" >漏洞已开始审阅,等待厂商确认</p> 
        </div> 
      </li> 
      <li name="__tab_step3_pub"> 
       <div class="info" id="tab_step3"> 
        <h4> 
         <div class="heading"></div> 
         待修复</h4> 
         <p class="text" >漏洞已被确认,等待厂商修复</p>   
       </div> 
      </li> 
      <li name="__tab_step4_pub"> 
        <div class="info" id="tab_step4"> 
        <h4> 
         <div class="heading"></div> 
         已关闭</h4> 
          <p class="text" >漏洞修复完毕,厂商关闭漏洞</p> 
        </div> 
      </li> 
      <li name="__tab_step5_pub" > 
        <div class="info" id="tab_step5"> 
        <h4> <div class="heading"></div> 
         已公开</h4> 
        <p class="text" >厂商同意公开此漏洞</p> 
        </div> 
      </li> 
     </ul> 
    </div> 
   </div> 
  </div>

这里采用的方法是根据处理的状态,这里是$status,对应的在相应的<li>的标签中增加样式类  class="active",而样式类active中实现的是在对应位置替换背景图片,即将原来的灰色流程线条替换成绿色的流程线条。即需要设置对应的替换后和替换前的css,这里对应的css如下(\assets\default\threatrules\style.css中的一部分):

.status ul { padding: 15px; } 
.status ul li { overflow: hidden; background: url("../threatrules/steps-line.jpg") repeat-y -3px 0px; padding: 26px 0 0px; } 
.status .active { background: url("../threatrules/steps-line-over.jpg") repeat-y -3px 0px; } 
.status .end { background: url("../threatrules/steps-line-over.jpg") repeat-y -3px 0px; } 
.status .end .heading { background: url("../threatrules/steps-over.jpg") no-repeat 0px 0px; } 
.status .bottom { background: url("../threatrules/steps-line.jpg") repeat-y -3px 0px; } 
.status .skip { background: url("../threatrules/steps-line-skip.jpg") repeat-y -3px 0px; } 
.status .skip .heading { background: url("../threatrules/steps-skip.jpg") no-repeat 0px 0px; } 
.status .active .heading { background: url("../threatrules/steps-over.jpg") no-repeat 0px 0px; } 
.status .heading { float: left; width: 20px; height: 20px; background: url("../threatrules/steps.jpg") no-repeat 0px 0px; margin-right: 5px; } 
.status .top { padding-top: 0px; } 
.status .bottom { background: url("../threatrules/steps-line-b1.jpg") no-repeat 0px 0px; } 
.status .bottom-active { background: url("../threatrules/steps-line-b2.jpg") no-repeat 0px 0px; }

设置好对应的css后,下一步就是编写js,根据$status的值,在对应的<li>中添加class即可,实现此功能的js代码如下:

<script type="text/javascript"> 
/*根据处理状态,添加或删除对应的样式名*/ 
function addClass(elem, className){ //增加类名 
  if(!elem.className){ 
      elem.className = className; 
      return; 
  } 
  var clazz = ' ' + elem.className + ' '; 
  if(clazz.indexOf(' ' + className + ' ') === -1){ 
      elem.className = elem.className + ' ' + className; 
  } 
} 
 var step1 = document.getElementById('tab_step1'), 
   step2 = document.getElementById('tab_step2'), 
   step3 = document.getElementById('tab_step3') , 
   step4 = document.getElementById('tab_step4'), 
   step5 = document.getElementById('tab_step5'); 
 var status = '<?php echo $status;?>'; 
 switch(status){ 
   case '1': //待确认 
     addClass(step2.parentNode, 'active'); //parentNode即为包含step2的外一层标签,此处即为<li>标签 
     break; 
   case '2': //待修复 
      addClass(step2.parentNode, 'active'); 
      addClass(step3.parentNode, 'active'); 
     break; 
   case '3'://已关闭 
     addClass(step2.parentNode, 'active'); 
     addClass(step3.parentNode, 'active'); 
     addClass(step4.parentNode, 'active'); 
     break; 
   case '4': //已公开 
     addClass(step2.parentNode, 'active'); 
     addClass(step3.parentNode, 'active'); 
     addClass(step4.parentNode, 'active'); 
     addClass(step5.parentNode, 'end bottom-active'); 
     break; 
 } 
</script>

这样设置之后,更改$status的状态,为“待修复”后,网页流程实现如下:

JavaScript实现审核流程状态的动态显示进度条

查看对应的网页html代码:

JavaScript实现审核流程状态的动态显示进度条

可以看到在对应的<li>标签中添加了class="active",至此设置成功,实现动态显示流程进度。

以上所述是小编给大家介绍的JavaScript实现审核流程状态的动态显示进度条,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ajax处理php返回json数据的实例代码
Jan 24 Javascript
javascript重复绑定事件造成的后果说明
Mar 02 Javascript
js替换字符串的所有示例代码
Jul 23 Javascript
JS 实现列表与多选框选择附预览动画
Oct 29 Javascript
Javascript日期格式化format函数的使用方法
Aug 30 Javascript
DWR3 访问WEB元素的两种方法实例详解
Jan 03 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
实例讲解JavaScript 计时事件
Jul 04 Javascript
js实现自定义进度条效果
Mar 15 #Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 #Javascript
jQuery模拟窗口抖动效果
Mar 15 #Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 #Javascript
基于React实现表单数据的添加和删除详解
Mar 14 #Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 #Javascript
JS检测数组类型的方法小结
Mar 14 #Javascript
You might like
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
php bootstrap实现简单登录
2016/03/08 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
2019/10/01 PHP
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
python中的闭包函数
2018/02/09 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
python实现远程控制电脑
2019/05/23 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
Python如何实现机器人聊天
2020/09/10 Python
python不同版本的_new_不同点总结
2020/12/09 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
校运动会广播稿(100篇)
2014/09/12 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
聚会通知怎么写
2015/04/23 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
村官2015年度工作总结
2015/10/14 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
Go语言怎么使用变长参数函数
2022/07/15 Golang