老师问一个问题。。
这里为什么最后12:24秒左右 浏览器支持getElementsByclassName的情况还需要做遍历过滤呢? 支持不是直接获取就可以了吗
正在回答
同学你好,这两个方法没有任何关系。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 。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
同学你好,问题解答如下:
1.下面是根据指定的标签名获取的元素,例如有多个li , 而要查找的是类名为"light dark"的元素。那么就要用for循环遍历li,然后通过els[i].className获取到元素的类名。再使用pattern.test()去匹配这个类名是否符合正则规范(代码中规定的正则就是要查找指定的类名的规则)。如果匹配成功,则说明此元素就是我们要查找的类名为"light dark"的li元素.
2.没有明白同学说的“那在自定义的函数当中 的searchClass 这两端 貌似都是搜索class把”什么意思?详细描述一下自己的疑惑。另外,这个方法中,当支持getElementsByClassName时,就使用的getElementsByClassName获取 。当不支持getElementsByClassName时,使用的是getElementsByTagName获取,然后通过正则去匹配指定类名的元素。所以下面的代码就是解决兼容性问题。
3. *是通配符,获取的是所有的元素,如果传入* ,就表示查找所有的元素。那么就不需要遍历了,直接输出即可,所以要判断一下。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星