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 相关文章推荐
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 Javascript
解决vue打包项目后刷新404的问题
Mar 06 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
更改BootStrap popover的默认样式及popover简单用法
Sep 13 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
ES6中Promise的使用方法实例总结
Feb 18 Javascript
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
微信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 OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
PHP错误处理函数
2016/04/03 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
解决python 输出是省略号的问题
2018/04/19 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
节约用水倡议书
2014/04/16 职场文书
《长征》教学反思
2014/04/27 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
2015年路政工作总结
2015/05/22 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python