js学习总结----getElementsByClass
JS本身是有getElementsByClass方法,但是在ie6-8是不兼容的,所以这里自己封装一个兼容的该方法
function getElementsByClass(className,context){ context = context || document; //把传递进来的样式类名的首尾空格先去掉,然后在按照中间的空格把里面的每一项拆分成数组 var classNameAry = className.replace(/(^ +| +$)/g,"").split(/ +/g); //获取指定上下文中的所有的元素标签,循环这些标签,获取每一个标签的className样式类名的字符串 var ary = []; var nodeList = context.getElementsByTagName("*"); for(var i = 0,len=nodeList.length;i<len;i++){ var curNode = nodeList[i]; //判断curNode.className是否包含classNameAry里面的样式值 // var isOk = true;//我们假设curNode for(var k = 0;k<classNameAry.length;k++){ var curName = classNameAry[k]; var reg = new RegExp("(^| +)"+curName+"( +|$)"); if(!reg.test(curNode.className)){ isOk = false; break; } } if(isOk){//拿每一个标签分别和所有样式类名比较后,如果结果还是true的话,说明当前元素标签包含了所有的样式,也是我们想要的。 ary.push(curNode) } } }