孤儿节点li上树之后改变了oList,为什么oList改变后lis不改变

孤儿节点li上树之后改变了oList,为什么oList改变后lis不改变

正在回答

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

2回答

同学你好,解答如下:

视频中老师说的lis不改变,是指如下代码中的lis不改变:

http://img1.sycdn.imooc.com//climg/603e166f0948361b08060701.jpg

这是因为代码是从上往下执行的,当执行到for循环时,lis中只有三个li,所以只给三个li绑定了事件。当点击按钮时,会新增li,但是for循环不会再次执行了,所以lis即使改变了,也不会影响for中的代码:

http://img1.sycdn.imooc.com//climg/603e17ff090bec5a09960797.jpg

http://img1.sycdn.imooc.com//climg/603e1730090eb0ae08470750.jpg

http://img1.sycdn.imooc.com//climg/603e16f409d3125608980716.jpg

所以即使lis变了,也不会让新增的li有事件。

而我说的lis改变了,是因为我是在事件中打印了lis,即每次追加事件,都看一下lis:

http://img1.sycdn.imooc.com//climg/603e1858094f6b4a07160344.jpg

二者是不同的,同学再理解一下。

祝学习愉快!

  • 扶耳摩兔 提问者 #1

    好的,谢谢老师的回答

    2021-03-02 19:20:37
好帮手慕久久 2021-03-02 18:19:21

同学你好,oList也会改变,可以如下这样查看:

http://img1.sycdn.imooc.com//climg/603e10d409c5612407840503.jpg

http://img1.sycdn.imooc.com//climg/603e10f009cbf74b08610192.jpg

http://img1.sycdn.imooc.com//climg/603e1117090e38a307950223.jpg

同学再看一下。

祝学习愉快!

  • 提问者 扶耳摩兔 #1

    老师在课上讲的就是lis不改变,所以不能通过遍历lis数组批量添加事件监听

    2021-03-02 18:23:30
  • getElementsByClassName()方法和getElementsByTagName()方法可以动态获取元素,可以理解为:页面上增加或者删除元素时,获取的元素个数可以改变,而querySelectorAll()方法做不到此效果。

    https://img1.sycdn.imooc.com//climg/6396e58609ab045608350610.jpg为什么这里不能动态获取,之前说的动态获取意思是动态获取主线程执行完毕后结构中的元素是吗?




    2022-12-12 16:27:37
  • 同学你好,问题解答如下:

    1、因为代码是按着从上到下的顺序执行,当执行到下图圈起的这句代码

    https://img1.sycdn.imooc.com//climg/6396e760099d270b13320888.jpg

    此时页面中只有html结构中书写的li元素,并没有追加新的li元素。

    2、动态获取的意思是:当你追加新的元素后,不用再重新使用getElementsByTagName方法,而是可以直接通过变量lis获取到所有的li元素。

    前面也有图文节对此进行了举例说明,可以回顾下加深理解和记忆。

    祝学习愉快~


    2022-12-12 16:39:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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