js实现流程动态显示

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

[html]  view plain  copy
  1.   

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

[html]  view plain  copy
  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中的一部分):

[html]  view plain  copy
  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代码如下:

[javascript]  view plain  copy
  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.   
  14.   var step1 = document.getElementById('tab_step1'),  
  15.       step2 = document.getElementById('tab_step2'),  
  16.       step3 = document.getElementById('tab_step3') ,  
  17.       step4 = document.getElementById('tab_step4'),  
  18.       step5 = document.getElementById('tab_step5');  
  19.   var status = '<?php echo $status;?>';  
  20.   switch(status){  
  21.       case '1'//待确认  
  22.           addClass(step2.parentNode, 'active'); //parentNode即为包含step2的外一层标签,此处即为<li>标签  
  23.           break;  
  24.       case '2'//待修复  
  25.            addClass(step2.parentNode, 'active');  
  26.            addClass(step3.parentNode, 'active');  
  27.           break;  
  28.       case '3'://已关闭  
  29.           addClass(step2.parentNode, 'active');  
  30.           addClass(step3.parentNode, 'active');  
  31.           addClass(step4.parentNode, 'active');  
  32.           break;  
  33.       case '4'//已公开  
  34.           addClass(step2.parentNode, 'active');  
  35.           addClass(step3.parentNode, 'active');  
  36.           addClass(step4.parentNode, 'active');  
  37.           addClass(step5.parentNode, 'end bottom-active');  
  38.           break;  
  39.   }  
  40. </script>  
这样设置之后,更改$status的状态,为“待修复”后,网页流程实现如下:

查看对应的网页html代码:


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值