老师问一个问题。。

老师问一个问题。。

这里为什么最后12:24秒左右 浏览器支持getElementsByclassName的情况还需要做遍历过滤呢? 支持不是直接获取就可以了吗

正在回答

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

4回答

同学你好,这两个方法没有任何关系。getElementByclassName是通过指定的类名获取元素,它返回的是一个对象集合,即DOM对象。els[i].className是获取元素的class属性 。

例如有一个div,类名为box 。getElementByclassName这种方式返回的是类似于数组的对象,所以通过数组下标的方式获取第一个div:

var els=document.getElementByclassName("box")[0];


上面的els就是div元素,它是一个DOM对象。那么js中操作div元素就使用这个els即可。而els.className就是操作els获取div元素的类名,所以els.className返回的就是类名box 。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕夭夭 2020-02-01 18:59:27

同学你好,问题解答如下:

1.下面是根据指定的标签名获取的元素,例如有多个li , 而要查找的是类名为"light dark"的元素。那么就要用for循环遍历li,然后通过els[i].className获取到元素的类名。再使用pattern.test()去匹配这个类名是否符合正则规范(代码中规定的正则就是要查找指定的类名的规则)。如果匹配成功,则说明此元素就是我们要查找的类名为"light dark"的li元素.

http://img1.sycdn.imooc.com//climg/5e35561109cce78c08620263.jpg

2.没有明白同学说的“那在自定义的函数当中 的searchClass 这两端 貌似都是搜索class把”什么意思?详细描述一下自己的疑惑。另外,这个方法中,当支持getElementsByClassName时,就使用的getElementsByClassName获取 。当不支持getElementsByClassName时,使用的是getElementsByTagName获取,然后通过正则去匹配指定类名的元素。所以下面的代码就是解决兼容性问题。

http://img1.sycdn.imooc.com//climg/5e3558e809542d6e09530805.jpg

3. *是通配符,获取的是所有的元素,如果传入* ,就表示查找所有的元素。那么就不需要遍历了,直接输出即可,所以要判断一下。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 陈立天 #1
    不是说不支持getElementByclassName么 那么这个els[i].className 的获取的className 和这个getElementByclassName 有啥区别
    2020-02-01 21:48:48
提问者 陈立天 2020-01-31 17:28:48

在问一个问题  这个题目中是说IE8以下浏览器不能用getElementsByClassName 那在自定义的函数当中 的searchClass 这两端 貌似都是搜索class把? 这里有啥不一样 既然都能搜索到了class 为啥还要做这么多下面的代码呢

提问者 陈立天 2020-01-31 14:39:37

还有一个问题就是!==“*”的情况 为什么需要对它做遍历比对?

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

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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