JavaScript實(shí)現(xiàn)審核流程狀態(tài)的動(dòng)態(tài)顯示進(jìn)度條
對(duì)于有很多流程的東西,我們希望能夠根據(jù)不同的階段,用流程條對(duì)應(yīng)地進(jìn)行顯示,如下所示:

以上功能對(duì)應(yīng)的html代碼如下:
<div class="col-md-12 col-lg-3">
<div class="panel panel-default">
<div class="tit06">
<h3>漏洞處理狀態(tài)</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>
待確認(rèn)</h4>
<p class="text" >漏洞已開(kāi)始審閱,等待廠商確認(rèn)</p>
</div>
</li>
<li name="__tab_step3_pub">
<div class="info" id="tab_step3">
<h4>
<div class="heading"></div>
待修復(fù)</h4>
<p class="text" >漏洞已被確認(rèn),等待廠商修復(fù)</p>
</div>
</li>
<li name="__tab_step4_pub">
<div class="info" id="tab_step4">
<h4>
<div class="heading"></div>
已關(guān)閉</h4>
<p class="text" >漏洞修復(fù)完畢,廠商關(guān)閉漏洞</p>
</div>
</li>
<li name="__tab_step5_pub" >
<div class="info" id="tab_step5">
<h4> <div class="heading"></div>
已公開(kāi)</h4>
<p class="text" >廠商同意公開(kāi)此漏洞</p>
</div>
</li>
</ul>
</div>
</div>
</div>
這里采用的方法是根據(jù)處理的狀態(tài),這里是$status,對(duì)應(yīng)的在相應(yīng)的<li>的標(biāo)簽中增加樣式類 class="active",而樣式類active中實(shí)現(xiàn)的是在對(duì)應(yīng)位置替換背景圖片,即將原來(lái)的灰色流程線條替換成綠色的流程線條。即需要設(shè)置對(duì)應(yīng)的替換后和替換前的css,這里對(duì)應(yīng)的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; }
設(shè)置好對(duì)應(yīng)的css后,下一步就是編寫js,根據(jù)$status的值,在對(duì)應(yīng)的<li>中添加class即可,實(shí)現(xiàn)此功能的js代碼如下:
<script type="text/javascript">
/*根據(jù)處理狀態(tài),添加或刪除對(duì)應(yīng)的樣式名*/
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': //待確認(rèn)
addClass(step2.parentNode, 'active'); //parentNode即為包含step2的外一層標(biāo)簽,此處即為<li>標(biāo)簽
break;
case '2': //待修復(fù)
addClass(step2.parentNode, 'active');
addClass(step3.parentNode, 'active');
break;
case '3'://已關(guān)閉
addClass(step2.parentNode, 'active');
addClass(step3.parentNode, 'active');
addClass(step4.parentNode, 'active');
break;
case '4': //已公開(kāi)
addClass(step2.parentNode, 'active');
addClass(step3.parentNode, 'active');
addClass(step4.parentNode, 'active');
addClass(step5.parentNode, 'end bottom-active');
break;
}
</script>
這樣設(shè)置之后,更改$status的狀態(tài),為“待修復(fù)”后,網(wǎng)頁(yè)流程實(shí)現(xiàn)如下:

查看對(duì)應(yīng)的網(wǎng)頁(yè)html代碼:

可以看到在對(duì)應(yīng)的<li>標(biāo)簽中添加了class="active",至此設(shè)置成功,實(shí)現(xiàn)動(dòng)態(tài)顯示流程進(jìn)度。
以上所述是小編給大家介紹的JavaScript實(shí)現(xiàn)審核流程狀態(tài)的動(dòng)態(tài)顯示進(jìn)度條,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JavaScript canvas繪制圓形加載進(jìn)度條
- 詳解JavaScript+Canvas繪制環(huán)形進(jìn)度條
- JavaScript實(shí)現(xiàn)可動(dòng)的canvas環(huán)形進(jìn)度條
- js+HTML5 canvas 實(shí)現(xiàn)簡(jiǎn)單的加載條(進(jìn)度條)功能示例
- JS實(shí)現(xiàn)進(jìn)度條動(dòng)態(tài)加載特效
- JavaScript實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)進(jìn)度條效果
- 基于 D3.js 繪制動(dòng)態(tài)進(jìn)度條的實(shí)例詳解
- php+javascript實(shí)現(xiàn)的動(dòng)態(tài)顯示服務(wù)器運(yùn)行程序進(jìn)度條功能示例
- JavaScript?canvas繪制動(dòng)態(tài)圓環(huán)進(jìn)度條
相關(guān)文章
原生JS 購(gòu)物車及購(gòu)物頁(yè)面的cookie使用方法
下面小編就為大家?guī)?lái)一篇原生JS 購(gòu)物車及購(gòu)物頁(yè)面的cookie使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
js 在定義的時(shí)候立即執(zhí)行的函數(shù)表達(dá)式(function)寫法
如果不需要顯示調(diào)用函數(shù), 讓這個(gè)函數(shù)在定義的時(shí)候就執(zhí)行的話, 該如何寫才可以呢,接下來(lái)將詳細(xì)介紹實(shí)現(xiàn)步驟,感興趣的朋友可以了解下2013-01-01
使用JavaScript實(shí)現(xiàn)隨機(jī)曲線之間進(jìn)行平滑切換
今天,我運(yùn)用拉格朗日插值法繪制了一條曲線,然而,我并未止步于靜態(tài)展示,而是引入了一個(gè)定時(shí)器,每隔一段時(shí)間便對(duì)曲線上的點(diǎn)進(jìn)行動(dòng)態(tài)更新,從而賦予曲線生命般的動(dòng)態(tài)變化,本文介紹了使用JavaScript實(shí)現(xiàn)隨機(jī)曲線之間進(jìn)行平滑切換,感興趣的朋友可以參考下2024-11-11
小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法
這篇文章主要介紹了小程序圖片長(zhǎng)按識(shí)別功能的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
用javascript獲取任意顏色的更亮或更暗顏色值示例代碼
最近在工作中遇到的一個(gè)需求,發(fā)現(xiàn)網(wǎng)上沒(méi)有相對(duì)應(yīng)的解決方法,索性自己寫一個(gè),所以這篇文章主要給大家介紹了關(guān)于利用javascript獲取任意顏色更亮或更暗顏色值的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07
JavaScript中檢測(cè)數(shù)組的3種方法小結(jié)
數(shù)組檢測(cè)是指在編程中對(duì)數(shù)組進(jìn)行驗(yàn)證和檢查的過(guò)程,本文主要介紹了JavaScript中檢測(cè)數(shù)組的3種方法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
js學(xué)習(xí)總結(jié)_輪播圖之漸隱漸現(xiàn)版(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇js學(xué)習(xí)總結(jié)_輪播圖之漸隱漸現(xiàn)版(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07

