最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS仿QQ好友列表展開(kāi)、收縮功能(第二篇)

 更新時(shí)間:2017年07月07日 17:05:08   作者:erdouzhang  
這篇文章主要介紹了JS仿QQ好友列表展開(kāi)、收縮功能,當(dāng)點(diǎn)擊一個(gè)li元素,其他li元素上的類(lèi)名清除掉。代碼簡(jiǎn)單易懂,需要的朋友可以參考下

上篇的基礎(chǔ)上繼續(xù)完善,點(diǎn)擊一個(gè)li元素,其他li元素上的類(lèi)名清除掉。

效果圖如下所示:

這里寫(xiě)圖片描述

js:

<script>
 window.onload = function(){ 
 var list = document.getElementById('list'); 
 var ah2 = list.getElementsByTagName('h2'); 
 var uls = list.getElementsByTagName('ul');
 var lis = null;//用于下面的存儲(chǔ)
 var arrli = [];//
 // h2要和下面的ul進(jìn)行匹配,所以我們要用索引值,給h2身上添加索引值
 for(var i=0;i<ah2.length;i++){ 
 ah2[i].index = i;//給h2添加索引值,點(diǎn)擊誰(shuí)就給誰(shuí)添加索引值
 ah2[i].onclick = function(){
 if(this.className == ''){//判斷所點(diǎn)擊的h2標(biāo)簽是否有類(lèi),
  //this.index指h2身上的索引數(shù),this指h2,h2的索引值為this.index
  uls[this.index].style.display = 'block'; 
  this.className = 'active';//給當(dāng)前點(diǎn)擊的h2添加類(lèi),更改箭頭方向
 }else{
  uls[this.index].style.display = 'none';
  this.className = '';
 }
 }
 }
 // 找到list里的所有ul,共有三個(gè)ul,所以用到for循環(huán)
 for(var i=0;i<uls.length;i++){//找到每一組ul
 lis = uls[i].getElementsByTagName('li');//找到uls中的所有l(wèi)i元素,存入到lis中,為什么要存一下呢?因?yàn)檎业降膌i元素是一組元素的集合,要給每一個(gè)元素添加點(diǎn)擊事件,存起來(lái)之后要再來(lái)一次for循環(huán),for套for中間沒(méi)有函數(shù)包著所以得換一個(gè)變量
 for(var j=0;j<lis.length;j++){//找到每組ul中的所有l(wèi)i
 arrli.push(lis[j]); //把每個(gè)li放到數(shù)組中,因?yàn)槭且僮饕唤Mli中的每個(gè),所以我們把它拎出來(lái)放在一起方便操作
 }
 }
 // 找到每個(gè)li之后進(jìn)行點(diǎn)擊事件操作
 for(var i=0;i<arrli.length;i++){
 arrli[i].onclick = function(){
 // 清除所有類(lèi)名,只給當(dāng)前點(diǎn)擊的添加
 // 只保留一個(gè)li元素添加類(lèi)名
 // 為什么用的是i呢?因?yàn)閒or套for它們中間有一層函數(shù)隔開(kāi)(有函數(shù)包含的情況下作用域發(fā)生了改變),所以可以使用同樣的i名稱(chēng)
 for(var i=0;i<arrli.length;i++){
  arrli[i].className = '';//去掉點(diǎn)擊所有添加的類(lèi)
 }
 this.className = 'hover';//給當(dāng)前點(diǎn)擊的li元素添加類(lèi)名
 }
 }
 }
</script>

注意:

怎么區(qū)分for循環(huán)中有的用 i 有的用 j?

答:①如果是一個(gè)for循環(huán),那么用 i 或者 j 哪個(gè)都行,一般是用 i .
②如果是兩個(gè)for嵌套,那么看兩個(gè)for中間有沒(méi)有函數(shù)隔開(kāi):1.有函數(shù)隔開(kāi),那么這兩個(gè)for循環(huán)中的變量都可以用 i 。2.沒(méi)有函數(shù)隔開(kāi),那么這兩個(gè)for循環(huán)中的變量不能使用相同的 i 來(lái)命名,一個(gè) i ,一個(gè) j .

例一:

下面是兩個(gè)嵌套的for循環(huán)中沒(méi)有函數(shù)隔開(kāi),所以一個(gè)是 i ,一個(gè)是 j .

for(var i=0;i<uls.length;i++){//找到每一組ul
 lis = uls[i].getElementsByTagName('li');
 for(var j=0;j<lis.length;j++){//找到每組ul中的所有l(wèi)i
 arrli.push(lis[j]); 
 }
}

例二:

也是兩個(gè)嵌套的for循環(huán)中,有一個(gè)函數(shù)隔開(kāi),那么就可以使用同一個(gè) i 來(lái)命名。

for(var i=0;i<arrli.length;i++){
 arrli[i].onclick = function(){ 
 for(var i=0;i<arrli.length;i++){
 arrli[i].className = '';//去掉點(diǎn)擊所有添加的類(lèi)
 }
 this.className = 'hover';//給當(dāng)前點(diǎn)擊的li元素添加類(lèi)名
 }
}

以上所述是小編給大家介紹的JS仿QQ好友列表展開(kāi)、收縮功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

德惠市| 文山县| 鄂伦春自治旗| 正宁县| 凤庆县| 水城县| 邵阳县| 古丈县| 临清市| 卫辉市| 龙泉市| 班玛县| 青神县| 长垣县| 天峨县| 通榆县| 庐江县| 通海县| 渭南市| 忻州市| 平阴县| 太保市| 齐河县| 龙陵县| 东阿县| 武义县| 永德县| 正安县| 高雄县| 上林县| 德州市| 阳信县| 新建县| 乌什县| 庆云县| 蒲城县| 廊坊市| 玉树县| 湖口县| 垣曲县| 吉安县|