本文介绍如何利用JavaScript根据后端返回的状态值动态更新前端审核流程进度条。通过判断$status变量,为对应的HTML列表项添加特定的CSS类名,从而切换背景图片以显示当前处理阶段。该方法实现了从待审阅到已公开等状态的可视化动态展示,代码简洁且易于集成。
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"。该样式类的作用是在指定位置替换背景图片,将原本灰色的流程线条切换为绿色的流程线条。因此,需要预先定义好替换前和替换后的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设置后,接下来需要编写JavaScript代码。根据$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的状态为“待修复”时,网页上的流程进度条将呈现如下效果:

检查对应的网页HTML源代码:

可以观察到,在对应的<li>标签中成功添加了class="active",至此配置完成,实现了流程进度的动态显示。
以上介绍了使用JavaScript实现审核流程状态动态显示进度条的方法,希望能为读者提供帮助。如有任何疑问,欢迎留言,小编会及时回复。同时感谢大家对本站的支持!