JavaScript通过Class Name获取一个对象的数组
2012-06-11 16:26
381 查看
DOM 提供了一个名为 getElementById() 的方法,这个方法将返回一个对象,这个对象就是参数 id 所对应的元素节点。另外,getElementByTagName() 方法会返回一个对象的数组,每一个对象分别对应着文档里有给定标签的一个元素。这个方法的参数是 html 标签的名字。现在我们考虑一个问题,能不能通过标签的类名class name来获取该对象呢?下面是这个猜想的程序实现(支持多个class查询和在某个范围内进行查询):
测试一
测试二
<script type="text/javascript"> /* * 根据元素clsssName得到元素集合 * @param fatherId 父元素的ID,默认为document * @tagName 子元素的标签名 * @className 用空格分开的className字符串 */ function getElementsByClassName(fatherId,tagName,className){ node = fatherId&&document.getElementById(fatherId) || document; tagName = tagName || "*"; className = className.split(" "); var classNameLength = className.length; for(var i=0,j=classNameLength;i<j;i++){ //创建匹配类名的正则 className[i]= new RegExp("(^|\\s)" + className[i].replace(/\-/g, "\\-") + "(\\s|$)"); } var elements = node.getElementsByTagName(tagName); var result = []; for(var i=0,j=elements.length,k=0;i<j;i++){//缓存length属性 var element = elements[i]; while(className[k++].test(element.className)){//优化循环 if(k === classNameLength){ result[result.length] = element; break; } } k = 0; } return result; } </script>
测试一
<div id="container"> <span class="aaa zzz ccc"></span> <div class="aaa bbb ccc"></div> </div> <div class="aaa bbb ccc"></div> <script type="text/javascript"> window.onload = function(){ alert(getElementsByClassName(document,"div","aaa ccc").length);//2 alert(getElementsByClassName("container","div","aaa ccc").length);//1 alert(getElementsByClassName("container","span","aaa zzz").length);//1 } </script>
测试二
<script type="text/javascript"> window.onload = function(){ var e=getElementsByClassName(document,"div","c_ad_block"); if(e){if(typeof(e.length)=='undefined'){e.parentNode.removeChild(e);}else{for(var i=0;i<e.length;i++){e[i].parentNode.removeChild(e[i]);}}} } </script>
相关文章推荐
- js通过Class Name获取一个对象的数组
- js通过Class Name获取一个对象的数组
- JavaScript中通过数组索引方式访问和属性名方式访问对象属性的一个小小误区
- javascript怎么把对象里的数据整合进另外一个数组里
- 反射第三步 : 通过反射获取某一个类的 构造器Constructor 并通过反射创建对象
- 通过一个uri获取一个Bitmap对象
- Javascript如何用一个优雅的姿势通过getStyle函数来获取元素的样式
- 用JavaScript判断一个对象是否数组?
- 通过主机名来获取一个ip对象
- 【自】JavaScript面向对象初探二:通过编写一个拖拽例子,让我们了解对象的继承
- Java反射之通过反射获取一个对象的方法信息
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- PHP中获取我的城市列表,通过排序,通过A-Z的循环!数列出相同的首字母结果!,放到一个以A-Z为key的数组里面去,再返回我要的结果!
- 【自学笔记】 原生JavaScript判断一个变量是否为数组,利用原型对象
- 判断一个对象是不是JavaScript数组(怎样判断一个变量是数组)
- Reflect 通过反射获取自定义注解值给另外一个对象赋值
- js中获取一个对象里面的方法和属性的javascript
- Javascript如何判断一个变量是普通变量还是数组还是对象?
- Json解析,同一个字段,获取的可能是对象,数组,或是null
- javascript 判断 一个对象是不是 数组的方法