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实现给图片加链接
Aug 15 Javascript
js 数组操作代码集锦
Apr 28 Javascript
IE bug table元素的innerHTML
Jan 11 Javascript
jquery 图片轮换效果
Jul 29 Javascript
js运动框架_包括图片的淡入淡出效果
May 11 Javascript
JavaScript实现文字与图片拖拽效果的方法
Feb 16 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
Apr 18 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 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模拟服务器实现autoindex效果的方法
2015/03/10 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Python input函数使用实例解析
2019/11/22 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
实习教师自我鉴定
2013/12/12 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
体育比赛口号
2014/06/09 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js