DOM&BOM中,换肤案例代码第一段为什么不能写为this,第二段为什么不能写为lis[i]?

DOM&BOM中,换肤案例代码第一段为什么不能写为this,第二段为什么不能写为lis[i]?

第一段:

<script>

        // 1.获取导航栏div对象

        var nav=document.querySelector('#header');


        // 2.获取所有所有的li标签

        var lis=document.querySelectorAll('li');


        // 3.循环为每个li上绑定点击事件

        for(var i=0;i<lis.length;i++){

            lis[i].onclick=function(){                                        //这里为什么不能写this?

                // 获取当前li的背景色,在设置给nav导航栏

                var bgc=this.style.backgroundColor;

                nav.style.backgroundColor=bgc;

            }

        }

    </script>

第二段:

<script>

        // 1.获取导航栏div对象

        var nav=document.querySelector('#header');


        // 2.获取所有所有的li标签

        var lis=document.querySelectorAll('li');


        // 3.循环为每个li上绑定点击事件

        for(var i=0;i<lis.length;i++){

            lis[i].onclick=function(){

                // 获取当前li的背景色,在设置给nav导航栏

                var bgc=this.style.backgroundColor;                 //这里为什么不能写lis[i]?

                nav.style.backgroundColor=bgc;

            }

        }

    </script>

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好

1、this指的是当前对象,而此处的当前对象指的是当前的全局对象 Window,所以此处不能使用this

2、该处是可以写成lis[i]的,这里的this指的就是lis[i],所以是可以写成lis[i]的,同学可以自己试下哦

https://img1.sycdn.imooc.com//climg/617cf6a9092e1e7d05170178.jpg

祝学习愉快~

  • 童真模式启动 提问者 #1
    2、我把this改为lis[i]导航栏没变色


    2021-10-31 15:47:10
  • 同学你好,是可以的哦,如下

    https://img1.sycdn.imooc.com//climg/617e4fb609287e3711820560.jpg

    可能是由于浏览器缓存原因导致的,同学清除下缓存试试

    https://img1.sycdn.imooc.com//climg/617e4fdb0999c20c05310231.jpg

    祝学习愉快~

    2021-10-31 16:31:26
  • 这是代码,感觉和上面一样啊,也清楚了缓存,怎么就没用呢?

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Document</title>

        <style>

             ……

        </style>

    </head>

    <body>

        <div id="topbar" class="title">

            <div class="w">

                前端开发博客

                <ul>

                    <li style="background-color: #DD5044;"></li>

                    <li style="background-color: #1CA261;"></li>

                    <li style="background-color: #458FD2;"></li>

                    <li style="background-color: #333;"></li>

                </ul>

            </div>

            <div id="header" class="blue">

                <div class="w nav">

                    <a href="#">首页</a>

                    <a href="#">Web前端</a>

                    <a href="#">Java开发</a>

                    <a href="#">人工智能</a>

                    <a href="#">UI设计</a>

                </div>

            </div>

        </div>


        <script>

            // 1.获取导航栏div对象

            var nav=document.querySelector('#header');


            // 2.获取所有所有的li标签

            var lis=document.querySelectorAll('li');


            // 3.循环为每个li上绑定点击事件

            for(var i=0;i<lis.length;i++){

                lis[i].onclick=function(){

                    // 获取当前li的背景色,在设置给nav导航栏

                    nav.style.backgroundColor=lis[i].style.backgroundColor;

                }

            }

        </script>

    </body>

    </html>


    2021-11-01 15:07:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师