这里this的位置,为什么不能用lis[i] ,必须用this吗?

这里this的位置,为什么不能用lis[i] ,必须用this吗?

# 具体遇到的问题
这里this的位置,为什么不能用lis[i] 。不是可以直接用DOM对象操作style属性吗?



<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

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

    <title>Document</title>

</head>


<body>

    <ul id="list">

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

        <li>列表项</li>

    </ul>


    <script>

        var oList = document.getElementById('list');

        var lis = oList.getElementsByTagName('li');


        // 书写循环语句,批量给元素添加监听

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

            lis[i].onclick = function () {

                // 在这个函数中,this表示点击的这个元素,this涉及函数上下文的相关知识,我们在“面向对象”课程中介绍

                this.style.color = 'red';

            };

        }

    </script>

正在回答

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

1回答

同学你好,以目前接触到的知识,是不能将this改为lis[i]的。this指向的是当前触发事件的元素,所以可以使用this。

循环执行的非常快,点击事件是在点击时才会触发,在点击事件里面使用i值,是循环之后的i值,在同学的代码中,获取的i值就是20,没有索引为20的li元素,所以是会报错的。

后面的课程中,会学习let,将var改为let,就可以把this改为lis[i]了,目前阶段,let可以作为一个了解,后期学习到的时候,再深入学习。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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