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.Encode手动解码技巧
Jul 14 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
解析页面加载与js函数的执行 onload or ready
Dec 12 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
Apr 03 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
jquery实现的点击翻书效果代码
Nov 04 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
基于javascript实现日历功能原理及代码实例
May 07 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
python实现指定字符串补全空格的方法
2015/04/30 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python assert关键字原理及实例解析
2019/12/13 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
python实例化对象的具体方法
2020/06/17 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
Java基础面试题
2012/11/02 面试题
十佳护士获奖感言
2014/02/18 职场文书
教师业务培训方案
2014/05/01 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python