如何實現(xiàn)側(cè)邊欄高亮设江?

1.背景介紹

在js-task-6中,我們需要實現(xiàn)一個側(cè)邊欄高亮的功能攘轩,今天就來講一下如何實現(xiàn)叉存。

2.知識剖析

實現(xiàn)側(cè)邊欄高亮,網(wǎng)頁刷新后仍然保持高亮狀態(tài)度帮,就需要我們存儲其高亮狀態(tài)的數(shù)據(jù)歼捏。

3.常見問題

如何存儲高亮狀態(tài)?

4.解決方案

這里使用了localStorage存儲其狀態(tài)

5.編碼實戰(zhàn)

    <!DOCTYPE html>
    <html lang="zh-cmn-Hans">
    <head>
        <meta charset="utf-8">
        <meta name="format-detection" content="telephone=no">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
        <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
        <title>側(cè)邊欄高亮</title>
        <style>
            html, body, ul, li, div {
                margin: 0;
                padding: 0;
            }

            ::-webkit-scrollbar {
                width: 0;
            }

            li {
                list-style: none;
            }

            aside {
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                overflow: auto;
                background-color: #ccc;
                width: 300px;
                text-align: center;
            }

            .toggle {
                padding-bottom: .5em;
            }

            .title {
                font-size: 20px;
                line-height: 1.5;
                color: #0d99a5;
                cursor: pointer;
            }

            .title:hover {
                background-color: red !important;
            }

            ul.body {
                display: none;
            }

            .list {
                font-size: 16px;
                color: #0000f1;
            }

            .list:hover {
                background-color: #00ee00 !important;
                cursor: pointer;
            }
        </style>

    </head>
    <body>
    <aside>
        <div class="toggle">
            <div class="title" index="1">title01</div>
            <ul class="body" index="1">
                <li class="list" index="1">list01</li>
                <li class="list" index="2">list02</li>
                <li class="list" index="3">list03</li>
                <li class="list" index="4">list04</li>
            </ul>
        </div>
        <div class="toggle">
            <div class="title" index="2">title02</div>
            <ul class="body" index="2">
                <li class="list" index="1">list01</li>
                <li class="list" index="2">list02</li>
                <li class="list" index="3">list03</li>
                <li class="list" index="4">list04</li>
            </ul>
        </div>
        <div class="toggle">
            <div class="title" index="3">title03</div>
            <ul class="body" index="3">
                <li class="list" index="1">list01</li>
                <li class="list" index="2">list02</li>
                <li class="list" index="3">list03</li>
                <li class="list" index="4">list04</li>
            </ul>
        </div>
        <div class="toggle">
            <div class="title" index="4">title04</div>
            <ul class="body" index="4">
                <li class="list" index="1">list01</li>
                <li class="list" index="2">list02</li>
                <li class="list" index="3">list03</li>
                <li class="list" index="4">list04</li>
            </ul>
        </div>
        <div class="toggle">
            <div class="title" index="5">title05</div>
            <ul class="body" index="5">
                <li class="list" index="1">list01</li>
                <li class="list" index="2">list02</li>
                <li class="list" index="3">list03</li>
                <li class="list" index="4">list04</li>
            </ul>
        </div>
    </aside>

    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <script>
        $(function () {
            //取值title
            if (localStorage.getItem('title')) {
                for (var i = 0; i < JSON.parse(localStorage.getItem('title')).length; i++) {
                    if (JSON.parse(localStorage.getItem('title'))[i] == 1) {
                        $(".title[index=" + i + "]").css("background-color", "red");
                        $(".title[index=" + i + "]+ul").css("display", "block");
                    } else {
                        $(".title[index=" + i + "]").css("background-color", "transparent");
                        $(".title[index=" + i + "]+ul").css("display", "none");
                    }
                }
            }

            //取list數(shù)組
            if (localStorage.getItem('list')) {
                for (var i = 0; i < JSON.parse(localStorage.getItem('list')).length; i++) {
                    for (var j = 0; j < JSON.parse(localStorage.getItem('list'))[i].length; j++) {
                        if (JSON.parse(localStorage.getItem('list'))[i][j] == 1) {
                            $(".title[index=" + i + "]").siblings("ul.body").children(".list[index=" + j + "]").css("background-color", "#00ee00");
                        } else {
                            $(".title[index=" + i + "]").siblings('ul.body').children(".list[index=" + j + "]").css("background-color", "transparent");
                        }
                    }
                }
            }


            //存數(shù)組title
            $('.title').click(function () {
                    var title = [];
                    $(".title").css('background-color', 'transparent');
                    $("ul.body").css("display", "none");
                    $(this).css('background-color', 'red');
                    $(this).siblings('ul.body').toggle();
                    if ($(this).siblings('ul.body').css('display') === 'block') {
                        title[Number($(this).attr("index"))] = 1;
                        console.log(title[Number($(this).attr("index"))]);
                        localStorage.setItem('title', JSON.stringify(title));
                    } else if ($(this).siblings('ul.body').css('display') === 'none') {
                        title[Number($(this).attr("index"))] = 0;
                        localStorage.setItem('title', JSON.stringify(title));
                    }
                    console.log($(this).siblings('ul.body').css("display"));
                }
            )

            //存數(shù)組list
            $('.list').click(function () {
                    //定義二維數(shù)組
                    var list = new Array(6);
                    for (var i = 0; i < 6; i++) {
                        list[i] = new Array(5);
                    }
                    //重置.list的背景色
                    $(".list").css('background-color', 'transparent');
                    $(this).css('background-color', '#00ee00');
                    //用Number轉(zhuǎn)化index的字符串值
                    list[Number($(this).parent().attr("index"))][Number($(this).attr("index"))] = 1;
                    //存數(shù)組需先把數(shù)組轉(zhuǎn)化為JSON
                    localStorage.setItem('list', JSON.stringify(list));
                }
            )
        });
    </script>
    </body>
    </html>

6.擴(kuò)展思考

還有什么方法存儲高亮狀態(tài)笨篷?

可以使用$stateParames瞳秽,在url中存取狀態(tài)。

7.參考文獻(xiàn)

如何創(chuàng)建二維數(shù)組

8.更多討論

如何創(chuàng)建二位數(shù)組率翅?

先建立一維數(shù)組练俐,再將數(shù)組的每一項都設(shè)置為二維數(shù)組:

                    var x=5,y=6;//數(shù)組的長度
                    var a=new Array(x);
                    for(var i=0;i< x ;i++){
                        a[i]=new Array(y);
                    }
                    console.log(a);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冕臭,隨后出現(xiàn)的幾起案子腺晾,更是在濱河造成了極大的恐慌,老刑警劉巖浴韭,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘喻,死亡現(xiàn)場離奇詭異,居然都是意外死亡念颈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門连霉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榴芳,“玉大人,你說我怎么就攤上這事跺撼】吒校” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵歉井,是天一觀的道長柿祈。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么躏嚎? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任蜜自,我火速辦了婚禮,結(jié)果婚禮上卢佣,老公的妹妹穿的比我還像新娘重荠。我一直安慰自己,他們只是感情好虚茶,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布戈鲁。 她就那樣靜靜地躺著,像睡著了一般嘹叫。 火紅的嫁衣襯著肌膚如雪婆殿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天罩扇,我揣著相機(jī)與錄音鸣皂,去河邊找鬼。 笑死暮蹂,一個胖子當(dāng)著我的面吹牛寞缝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仰泻,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼荆陆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了集侯?” 一聲冷哼從身側(cè)響起被啼,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棠枉,沒想到半個月后浓体,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡辈讶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年命浴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贱除。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡生闲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出月幌,到底是詐尸還是另有隱情碍讯,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布扯躺,位于F島的核電站捉兴,受9級特大地震影響蝎困,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倍啥,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一禾乘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逗栽,春花似錦盖袭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凭峡,卻和暖如春拙已,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摧冀。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工倍踪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人索昂。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓建车,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椒惨。 傳聞我的和親對象是個殘疾皇子缤至,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件康谆、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,033評論 4 62
  • 初三以前沃暗,我一直是個“吊車尾”月洛,成績很差,因為拖班級后腿孽锥,遭到了不少老師的白眼嚼黔。那時候我心態(tài)好,總覺得自己沒錯忱叭,至...
    默小九Roxy閱讀 640評論 24 11
  • 每次乍一聽到上級單位準(zhǔn)備抽調(diào)基層單位某某同志的意向隔崎,都不免心驚。仔細(xì)想想韵丑,其實本身是件好事兒,不管對員工個人還是對...
    樸樸淺影閱讀 358評論 0 5