找到在页面中找到测试的所有节点的方法。

找到在页面中找到测试的所有节点的方法。
前言

阿里巴巴网络前端实习生就要有一个在线测试了。其实我是一个先恶补知识的菜鸟。所以百度谷歌以前在阿里巴巴学校做过前端测试题,觉得自己真的被鄙视了,完全不懂。AH网是在阿里巴巴网上写的,百度谷歌是不是给我们一个机会

当你看到这个问题时,我认为你应该总结一些你使用的方式,比如jQuery,有一些方法可以使浏览器兼容,或者工具类,这对将来的开发很有好处。

HTML

为了方便起见,让我们写下HTML
复制代码代码如下所示:
找到我
发现

我们省略了CSS,我们的重点不是CSS样式是如何编写的,我们希望使用Javascript通过样式名找到一组节点。

实现方法

1 getelementsbyclassname
复制代码代码如下所示:
console.log(document.getelementsbyclassname());
console.log(document.getelementsbyclassname(B));

结果(火狐27)
事实上,我认为我应该能够解决这个问题,但看看它的兼容性,我认为这应该是另一种方式找到一种方式。
2 querySelectorAll

复制代码代码如下所示:
console.log(document.queryselectorall(,));
console.log(document.queryselectorall(。B。));
让我们看看结果是什么,与上面有什么区别
第二个结果是不同的。如果原querySelectorAll参数有两个,需要用逗号隔开。实际上,这意味着具有样式或B样式的节点可以匹配。

事实上,这种方法的兼容性不是很好。
基于对以上问题的相容性(毕竟,在中国的浏览器IE6 / 7 / 8仍然是大多数),我没有办法做我自己。

3 querynodesbyclass

我想我应该先说出我的想法。

(1)首先获得整个页面的每个节点。
(2)遍历每个节点和它的类名字符串
(3) to operate the className string, first to divide into an array with a space, then one object, and set up its key as each element of the array, then the corresponding value is true
(4)现在的问题是根据传入的参数(例如选择器的参数)

现在让我们给出代码
复制代码代码如下所示:
函数的StringToObj(字符串){
var arr = string.split()。Sort();
var结果{ };
对于(var i = arr.length-1;ARR {我};我--){
结果{ {我} } =真实度;
}
返回结果;
}

复制代码代码如下所示:
功能stringtoarray(字符串){
var arr = string.split()。Sort();
var结果{ };
对于(var i = arr.length-1;ARR {我};我--){
result.push(ARR {我});
}
返回结果;
}

复制代码代码如下所示:
功能querynodesbyclass(className){
/想法(1)
所有变量= document.getelementsbytagname(*),all.length len =结果= { };
VaR的CNAME = stringtoarray(类名); / /想法(4)
对于(var i = 0;i;i;+;+)遍历每个节点对应的思想(2)
这个想法是 / /(3)是stringtoobj方法
无功dom_cname = StringToObj(所有{我}。类名),cname_len = cname.length;
对于(var j = 0;J < cname_len;j++){
如果(!dom_cname { } }){ CNAME {J}.
打破;
}
如果(J = cname_len)
{
Result.push(所有{我});
} }
返回结果;
}
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部