完美實現(xiàn)js選項卡切換效果(二)
本文實例為大家分享了js選項卡切換的具體代碼,供大家參考,具體內(nèi)容如下
通過設(shè)置定時器實現(xiàn)延時0.5s切換,一個重要的技巧是定義了一個that變量來存放當前指針this。
之所以不能在這直接引用this是因為setTimeout是window對象,用this的話會指向定時器,所以要在前面定義一個變量。
還要注意調(diào)用定時器前要判斷是否存在準備執(zhí)行的定時器。
效果如圖:

具體代碼:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>延時切換</title>
<style type="text/css">
*{margin: 0;padding: 0;font: normal 12px "微軟雅黑";color: #000000;}
ul{list-style-type: none;}
a{text-decoration: none;}
#tab-list{width: 275px;height: 190px;margin: 20px auto;}
#ul1{border-bottom: 2px solid #8B4513;height: 32px;}
#ul1 li{display: inline-block;width: 60px;line-height: 30px;text-align: center;
border: 1px solid #999;border-bottom: none;margin-left: 5px;}
#ul1 li:hover{cursor: pointer;}
#ul1 li.active{border-top: 2px solid #8B4513;border-bottom: solid 2px #ffffff;}
#tab-list div{border: 1px solid #7396B8;border-top: none;}
#tab-list div li{height: 30px;line-height: 30px;text-indent: 8px;}
.show{display: block;}.hide{display: none;}
</style>
<script type="text/javascript">
window.onload=function(){
var ul1=document.getElementById('ul1');
var aLi=ul1.getElementsByTagName('li');
var oDiv=document.getElementById('tab-list');
var aDiv=oDiv.getElementsByTagName('div');
var timer=null;
for(var i=0;i<=aLi.length;i++){
aLi[i].id=i;
aLi[i].onmouseover=function(){
var that=this;//用that這個變量來引用當前滑過的li
//如果存在準備執(zhí)行的定時器,立即清除,只能當前停留時間大于500ms時才開始執(zhí)行(指鼠標快速滑過一個的那一瞬間要清除掉產(chǎn)生的定時器)
if(timer){
clearTimeout(timer);
timer=null;
}
//延時半秒執(zhí)行
timer=window.setTimeout(function(){
for(var i=0;i<aLi.length;i++){
aLi[i].className="";
aDiv[i].className="hide";
}
that.className="active";//之所以不能在這直接引用this是因為setTimeout是window對象,用this的話會指向定時器,所以要在前面定義一個變量
aDiv[that.id].className="show";
},500);
}
}
}
</script>
</head>
<body>
<div id="tab-list">
<ul id="ul1">
<li class="active">房產(chǎn)</li><li>家居</li><li>二手房</li>
</ul>
<div>
<ul>
<li><a href="javascript:;">275萬購昌平鄰鐵三居 總價20萬買一居</a></li>
<li><a href="javascript:;">200萬內(nèi)購五環(huán)三居 140萬安家東三環(huán)</a></li>
<li><a href="javascript:;">北京首現(xiàn)零首付樓盤 53萬購東5環(huán)50平</a></li>
<li><a href="javascript:;">京樓盤直降5000 中信府 公園樓王現(xiàn)房</a></li>
</ul>
</div>
<div class="hide">
<ul>
<li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窩</a></li>
<li><a href="javascript:;">經(jīng)典清新簡歐愛家 90平老房煥發(fā)新生</a></li>
<li><a href="javascript:;">新中式的酷色溫情 66平撞色活潑家居</a></li>
<li><a href="javascript:;">瓷磚就像選好老婆 衛(wèi)生間煙道的設(shè)計</a></li>
</ul>
</div>
<div class="hide">
<ul>
<li><a href="javascript:;">通州豪華3居260萬 二環(huán)稀缺2居250w甩</a></li>
<li><a href="javascript:;">西3環(huán)通透2居290萬 130萬2居限量搶購</a></li>
<li><a href="javascript:;">黃城根小學學區(qū)僅260萬 121平70萬拋!</a></li>
<li><a href="javascript:;">獨家別墅280萬 蘇州橋2居優(yōu)惠價248萬</a></li>
</ul>
</div>
</div>
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS重寫Date函數(shù)以及兼容IOS系統(tǒng)
這篇文章主要介紹了JS重寫Date函數(shù)以及兼容IOS系統(tǒng),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
簡述JavaScript提交表單的方式 (Using JavaScript Submit Form)
這篇文章主要介紹了簡述JavaScript提交表單的方式 (Using JavaScript Submit Form)的相關(guān)資料,需要的朋友可以參考下2016-03-03
BootStrap Validator使用注意事項(必看篇)
針對bootstrap2和bootstrap3有不同的版本,在使用bootstrap validator時需要了解其注意事項,下面小編把我遇到的注意事項分享給大家,供大家參考2016-09-09
JS實現(xiàn)把一個頁面層數(shù)據(jù)傳遞到另一個頁面的兩種方式
這篇文章主要介紹了JS實現(xiàn)把一個頁面層數(shù)據(jù)傳遞到另一個頁面的方式,本文給大家提供了兩種方式,需要的朋友可以參考下2018-08-08

