背景:

由于原生的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

最新文章

  1. LINQ to SQL语句(13)之开放式并发控制和事务
  2. 黑马-----内存模型和volatile详解
  3. MySQL Information Functions
  4. PhpStorm下Laravel代码智能提示
  5. DiskFileItemFactory类
  6. linux下可以禁用的一些服务
  7. java 金额计算,商业计算 double不精确问题 BigDecimal,Double保留两位小数方法
  8. HDu 3449 (有依赖的01背包) Consumer
  9. MVC部署-发布本地数据库(Localdb)时连接异常
  10. 在raw_input()中使用中文提示,在CMD下中文乱码问题解决。。。
  11. 使用asyncio实现redis客户端
  12. 阿里巴巴Java开发程序猿年薪40W是什么水平?
  13. 保护代理模式-Access Proxy(Java实现)
  14. SQL设置时间格式
  15. Linux中的15个基本&#39;ls&#39;命令示例
  16. makefile中&quot;:=&quot;,&quot;=&quot;,&quot;?=&quot;,&quot;+=&quot;
  17. 2017-2018-2 20155303 『网络对抗技术』Exp3:免杀原理与实践
  18. [Algorithm] Binary tree: Level Order Traversal
  19. C# winform开发嵌套Chrome内核浏览器(WebKit.net)开发(一)
  20. python 操作excel格式化及outlook正文,发送邮件

热门文章

  1. spring-qualifier解释
  2. mysql的replication(主从同步)总结
  3. 服务器端调用Word组件读取Word权限、未将对象引用到对象实例终极解决方案
  4. SOA
  5. php防止重复提交问题
  6. InstallShield Limited Edition for Visual Studio 2013
  7. jquery mobile将页面内容当成弹框进行显示
  8. Thinkphp 连接数据库、查询、添加
  9. dede 删除栏目文章后, 让ID从1开始
  10. JQuery连接地址