当前位置:Gxlcms > JavaScript > JavaScript实现审核流程状态的动态显示进度条

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

时间:2021-07-01 10:21:17 帮助过:5人阅读

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

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

  1. <div class="col-md-12 col-lg-3">
  2. <div class="panel panel-default">
  3. <div class="tit06">
  4. <h3>漏洞处理状态</h3>
  5. </div>
  6. <div class="status">
  7. <ul>
  8. <li name="__tab_step1_pub" class="top active">
  9. <div class="info" id="tab_step1">
  10. <h4>
  11. <div class="heading"></div>
  12. 待审阅</h4>
  13. <p class="text" >漏洞已提交,等待厂商审阅</p>
  14. </div>
  15. </li>
  16. <li name="__tab_step2_pub" >
  17. <div class="info" id="tab_step2">
  18. <h4>
  19. <div class="heading"></div>
  20. 待确认</h4>
  21. <p class="text" >漏洞已开始审阅,等待厂商确认</p>
  22. </div>
  23. </li>
  24. <li name="__tab_step3_pub">
  25. <div class="info" id="tab_step3">
  26. <h4>
  27. <div class="heading"></div>
  28. 待修复</h4>
  29. <p class="text" >漏洞已被确认,等待厂商修复</p>
  30. </div>
  31. </li>
  32. <li name="__tab_step4_pub">
  33. <div class="info" id="tab_step4">
  34. <h4>
  35. <div class="heading"></div>
  36. 已关闭</h4>
  37. <p class="text" >漏洞修复完毕,厂商关闭漏洞</p>
  38. </div>
  39. </li>
  40. <li name="__tab_step5_pub" >
  41. <div class="info" id="tab_step5">
  42. <h4> <div class="heading"></div>
  43. 已公开</h4>
  44. <p class="text" >厂商同意公开此漏洞</p>
  45. </div>
  46. </li>
  47. </ul>
  48. </div>
  49. </div>
  50. </div>

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

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

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

  1. <script type="text/javascript">
  2. /*根据处理状态,添加或删除对应的样式名*/
  3. function addClass(elem, className){ //增加类名
  4. if(!elem.className){
  5. elem.className = className;
  6. return;
  7. }
  8. var clazz = ' ' + elem.className + ' ';
  9. if(clazz.indexOf(' ' + className + ' ') === -1){
  10. elem.className = elem.className + ' ' + className;
  11. }
  12. }
  13. var step1 = document.getElementById('tab_step1'),
  14. step2 = document.getElementById('tab_step2'),
  15. step3 = document.getElementById('tab_step3') ,
  16. step4 = document.getElementById('tab_step4'),
  17. step5 = document.getElementById('tab_step5');
  18. var status = '<?php echo $status;?>';
  19. switch(status){
  20. case '1': //待确认
  21. addClass(step2.parentNode, 'active'); //parentNode即为包含step2的外一层标签,此处即为<li>标签
  22. break;
  23. case '2': //待修复
  24. addClass(step2.parentNode, 'active');
  25. addClass(step3.parentNode, 'active');
  26. break;
  27. case '3'://已关闭
  28. addClass(step2.parentNode, 'active');
  29. addClass(step3.parentNode, 'active');
  30. addClass(step4.parentNode, 'active');
  31. break;
  32. case '4': //已公开
  33. addClass(step2.parentNode, 'active');
  34. addClass(step3.parentNode, 'active');
  35. addClass(step4.parentNode, 'active');
  36. addClass(step5.parentNode, 'end bottom-active');
  37. break;
  38. }
  39. </script>

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

查看对应的网页html代码:

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

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

人气教程排行