JS仿QQ好友列表展開(kāi)、收縮功能(第二篇)
在上篇的基礎(chǔ)上繼續(xù)完善,點(diǎn)擊一個(gè)li元素,其他li元素上的類(lèi)名清除掉。
效果圖如下所示:

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)站的支持!
- JS+CSS實(shí)現(xiàn)DIV層的展開(kāi)、收縮效果
- js實(shí)現(xiàn)div層緩慢收縮與展開(kāi)的方法
- vuejs實(shí)現(xiàn)折疊面板展開(kāi)收縮動(dòng)畫(huà)效果
- JS右下角廣告窗口代碼(可收縮、展開(kāi)及關(guān)閉)
- JavaScript設(shè)置FieldSet展開(kāi)與收縮
- JS實(shí)現(xiàn)固定在右下角可展開(kāi)收縮DIV層的方法
- 在iframe里的頁(yè)面編寫(xiě)js,實(shí)現(xiàn)在父窗口上創(chuàng)建動(dòng)畫(huà)效果展開(kāi)和收縮的div(不變動(dòng)iframe父窗口代碼)
- JS仿QQ好友列表展開(kāi)、收縮功能(第一篇)
- Vue.JS實(shí)現(xiàn)垂直方向展開(kāi)、收縮不定高度模塊的JS組件
- JavaScript實(shí)現(xiàn)QQ列表展開(kāi)收縮擴(kuò)展功能
- javascript使用substring實(shí)現(xiàn)的展開(kāi)與收縮文字功能示例
相關(guān)文章
鼠標(biāo)拖動(dòng)動(dòng)態(tài)改變表格的寬度的js腳本 兼容ie/firefox
table拖動(dòng)(兼容Firefox 3.5/IE6),固定表格寬度在網(wǎng)上搜索了好久,找到的都是只能在IE下有效的,后來(lái)終于找到了支持firefox的了。2009-12-12
移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
TypeScript在Vuex4中使用TS實(shí)戰(zhàn)分享
這篇文章主要介紹了TypeScript在Vuex4中使用TS實(shí)戰(zhàn)分享,vuex4類(lèi)型?Api分析和vuex4實(shí)戰(zhàn)兩部分講述,需要的小伙伴可以參考一下2022-06-06
javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果,實(shí)例分析了javascript鼠標(biāo)拖動(dòng)效果的相關(guān)要點(diǎn)與實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
簡(jiǎn)單的網(wǎng)頁(yè)廣告特效實(shí)例
下面小編就為大家?guī)?lái)一篇簡(jiǎn)單的網(wǎng)頁(yè)廣告特效實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
關(guān)于arguments,callee,caller等的測(cè)試
關(guān)于arguments,callee,caller等的測(cè)試...2006-12-12
javascript中返回頂部按鈕的實(shí)現(xiàn)
這篇文章主要介紹了使用javascript實(shí)現(xiàn)博客園頁(yè)面右下角返回頂部按鈕的思路及源碼,非常不錯(cuò),這里推薦給小伙伴們2015-05-05
JS設(shè)計(jì)模式之?dāng)?shù)據(jù)訪(fǎng)問(wèn)對(duì)象模式的實(shí)例講解
下面小編就為大家?guī)?lái)一篇JS設(shè)計(jì)模式之?dāng)?shù)據(jù)訪(fǎng)問(wèn)對(duì)象模式的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09

