js document.getElementsByClassName的使用介绍与自定义函数


Posted in Javascript onNovember 25, 2016

getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持搜索。

getElementByClassName()函数的使用方法:

使用JavaScript访问DOM的一个重大问题是,此过程需要一种通过元素类名称来选择类的类函数,对DOMContentReady,这种类函数的缺失导致开发人员需要自己编写自定义脚本业执行上述任务,许多这个类脚本都是围绕着getElementByClassName()建立的,这种解决方法在HTML5中被标准化,另外,这种方法还本地存在于现代浏览器中,GetElementByClassName()只使用一个字符串值作为输入.并返回一个Nodelist,这个NodeList包含所有类名称匹配这个字符串值的元素:

var el = document.getElementsByClassName('foo');

通过在字符串中使用空格分隔类,也可以匹配多个类,下面的代码挑选出了所有既拥有foo类名称又拥有bar类名称的元素:

var el = document.getElementsByClassName('foo bar');

W3C没有getElementByClassName这个函数,我们可以自己定义一个函数来模拟它。

一般如下几种方法:

1、要不就是使用jquery来实现

2、通过自定义函数解决

class单个时 如class="test"

function getElementsByClassName (className) {
		  var all = document.all ? document.all : document.getElementsByTagName('*');
		  var elements = new Array();
		  for (var e = 0; e < all.length; e++) {
			if (all[e].className == className) {
				elements[elements.length] = all[e];
				break;
			}
		  }
		  return elements;
		 }

代码二、

function getElementsByClassName(className,parent){
        var oParent=parent?document.getElementById("parent"):document;
        var oLis=oParent.getElementsByTagName("*");
        var arr=[];
        for(var i=0;i<oLis.length;i++){
          if(oLis[i].className==className){
            arr.push(oLis[i])
          };
          return arr;
        }
      };

class有多个的时候同样匹配,如class="test1 test2 test3"

function getElementsByClassName (className) {
		  var all = document.all ? document.all : document.getElementsByTagName('*');
		  var elements = new Array();
		  for (var e = 0; e < all.length; e++) {
			 var classList = all[e].className.split(" ");
			 for(var i=0;i<classList.length;i++){
				 if (classList[i] == className) {
					elements[elements.length] = all[e];
				  break;
				 }
			 }
		  }
		  return elements;
		 }

下面再附一个完整的测试代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset='UTF-8' />
  <script>
    /*JS写getElementByClassName;
    我发现chorm、firefox、ie都支持document.getElementsByClassName */
      window.onload = function(){
        var adom = document.getElementsByClassName('a1');
        for(var i = 0;i<adom.length;i++)
          adom[i].style.backgroundColor="red";
      };
      function getElementByClassName(className){
        var elems = [];
        if(!document.getElementsByClassName){
          alert("no exit");
          var dom = document.getElementByTagName('*');
          for(var i = 0;i<dom.length;i++){
            if(dom[i].className == className)
              elems.push(dom[i]);
          }
        }else{
          elems = document.getElementsByClassName(className);
          alert('exit');
        }
        return elems;
      }
  </script>
</head>

<body>
  <div id="a1">a1</div>
  <div class="a1">a1</div>
  <div class="a1">a1</div>
  <div id="a1">a1</div>
  <div class="a1">a1</div>
</body>

</html>

效果如图所示:

js document.getElementsByClassName的使用介绍与自定义函数

Javascript 相关文章推荐
JavaScript 输入框内容格式验证代码
Feb 11 Javascript
js 返回时间戳所对应的具体时间
Jul 20 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
深入分析Javascript事件代理
Jan 30 Javascript
prototype.js常用函数详解
Jun 18 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
Vue使用json-server进行后端数据模拟功能
Apr 17 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
Sep 12 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
JavaScript定时器常见用法实例分析
Nov 15 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
Nov 25 #Javascript
JS实现的图片预览插件与用法示例【不上传图片】
Nov 25 #Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 #Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 #Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 #Javascript
利用angular.copy取消变量的双向绑定与解析
Nov 25 #Javascript
JS冒泡事件与事件捕获实例详解
Nov 25 #Javascript
You might like
php编译安装php-amq扩展简明教程
2016/06/25 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python中的多重继承实例讲解
2014/09/28 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
pandas 对group进行聚合的例子
2019/12/27 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
Python 绘制可视化折线图
2020/07/22 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
写自荐信要注意什么
2013/12/26 职场文书
节水标语大全
2014/06/11 职场文书
应届大学生自荐书
2014/06/17 职场文书
新闻通讯稿范文
2015/07/22 职场文书
儿童诗两首教学反思
2016/02/23 职场文书