背景:

由于原生的getElementsByClassName不支持在指定标签中查找指定元素为指定class的情况,所以,这里舍弃了原生的方法调用

 

方法一:

function getElementByClassName(parent,tagName,className) {

	/*
*参数说明:
*@parent:父元素,默认为document
*@tagName:子元素的标签名
*@className: 用空格分开的className字符串
*/ var aEls=parent.getElementsByTagName(tagName); var arr=[]; for(var i=0;i<aEls.length;i++){ var aClassName=aEls[i].className.split(' ');//注意,是用' '(空格)拆分 for(var j=0;j<aClassName.length;j++){ if(aClassName[j] == className){
arr.push(aEls[i]);
break;
}
} } return arr;
}

方法二:

function getElementByClassName(parent,tagName,className) {

	/*
*参数说明:
*@parent:父元素,默认为document
*@tagName:子元素的标签名
*@className: 用空格分开的className字符串
*/ var aEls=parent.getElementsByTagName(tagName); var arr=[]; for(var i=0;i<aEls.length;i++){ if(aEls[i].classList.contains(className)){
arr.push(aEls[i]);
} } return arr;
}

测试:

<div id="area">
<p class="p1">1</p>
<p class="p1">2</p>
<p class="p2 p3">3</p>
<p class="p1 p3">4</p>
<p class="p2 p2">5</p>
</div> <script type="text/javascript">
var oArea=document.getElementById('area');
var aP1=getElementByClassName(oArea,'p','p1');
var aP2=getElementByClassName(oArea,'p','p2'); console.log(aP1);
console.log(aP2); </script>

方法一,测试结果:

方法二,测试结果:

了解更多:

1#支持多个class查询和在某个范围内进行查询的getElementsByClassName实现

http://www.cnblogs.com/fool/archive/2010/10/09/1846424.html

2#getElementsByClassName的理想实现

http://www.cnblogs.com/rubylouvre/archive/2009/07/24/1529640.html

Javascript:getElementsByClassName的更多相关文章

  1. [ javascript ] getElementsByClassName与className和getAttribute!

    对于javascript中的getElementsByClassName 在IE 6/7/8 不支持问题. 那么须要模拟出getElementsByClassName  须要採用className属性 ...

  2. javascript getElementsByClassName扩展函数

    代码: function getElementsByClassName(){ if(!arguments[0]){return []};//未指定任何参数,直接返回 var args=argument ...

  3. (转载)怎么写tab?

    演示地址:http://www.adanghome.com/js_demo/3/ =========================================================== ...

  4. RobotFramework测试问题二:各种元素不能定位问题

    各种元素不能定位问题 一.元素定位 A. Click Element + xpath B. Click Element + contains C. Execute Javascript + getEl ...

  5. 深入理解javascript选择器API系列第二篇——getElementsByClassName

    × 目录 [1]使用 [2]classList [3]扩展 前面的话 既然有getElementById()和getElementsByTagName()方法,为什么没有getElementsByCl ...

  6. 【JavaScript兼容】关于IE8及以下无法通过getElementsByClassName()方法获得元素的解决方法

    try{ var a = document.getElementsByClassName("cla"); console.log(a); }catch(ex){ var array ...

  7. javascript解决getElementById()的bug以及getElementsByClassName的兼容性写法

    <a name="target" href="#">链接</a> <p id="target">文字说明 ...

  8. javascript中document.getElementsByClassName兼容性封装方法一

    var getElmsByClsName = function(className, results) { results = results || []; // 判断浏览器是否支持 getEleme ...

  9. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

随机推荐

  1. ASP.NET-FineUI开发实践-2

    FineUI好处之一在于No JS,这里的No JS并不是不使用JS,JS对于ASP.Net是必不可少的,只是FineUI把大部分JS封装,如果想用,后台提供了很多方法返回JS,Get...Refer ...

  2. MVC项目,系统找不到指定的文件。(异常来自 HRESULT:0x80070002)

    今天在用Visual Studio新建MVC项目的时候,遇到错误 系统找不到指定的文件.(异常来自 HRESULT:0x80070002) 解决办法:工具--> 扩展和更新 -->联机(V ...

  3. c#将Excel数据导入到数据库的实现代码(转载)

    假如Excel中的数据如下:     数据库建表如下:     其中Id为自增字段:      代码如下: using System; using System.Collections.Generic ...

  4. js三种消息框总结-警告框、确认框、提示框

    js消息框类别:警告框.确认框.提示框 警告框:alert("文本"); 确认框:confirm("文本"); 提示框:prompt("文本" ...

  5. hdu 2203

    题意: 子串问题 水题,只要把母串*2,然后比较...... 感觉我好懒....没有自己写函数...... 反正我不是勤快的人......... AC代码: #include <iostream ...

  6. oracle中存储过程详解

    oracle中存储过程的使用 过程是指用于执行特定操作的PL/SQL块.如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程.通过使用过程,不仅可以简化客户应用的开发和维护,而且可以提高 ...

  7. 单电机板机模型,f22

    视频连接 http://v.youku.com/v_show/id_XMTI5MDEzMzIxMg==.html?from=y1.7-1.2 http://v.youku.com/v_show/id_ ...

  8. 搭建Memcached + php 缓存系统

    服务器环境,Centos6.5 1.安装Memcached服务端 Yum -y install memcached 2.配置Memcached服务端用户以及自动启动服务等 将服务配置成自启动 chkc ...

  9. python 基础,包括列表,元组,字典,字符串,set集合,while循环,for循环,运算符。

         1.continue 的作用:跳出一次循环,进行下一次循环      2.break 跳出不再循环      3.常量 (全是大写)NAME = cjk  一般改了会出错      4.py ...

  10. GetMenu返回0解决方法

    在CMainFrame类中找到CMFCMenuBar m_wndMenuBar;这个成员变量,将跟它相关的代码注释掉的话,然后运行,OK.