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 相关文章推荐
关于全局变量和局部变量的那些事
Jan 11 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
JavaScript表单验证实例之验证表单项是否为空
Jan 10 Javascript
javascript时间差插件分享
Jul 18 Javascript
javascript设计模式之模块模式学习笔记
Feb 15 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 Javascript
Angularjs的启动过程分析
Jul 18 Javascript
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
详解Python中的循环语句的用法
2015/04/09 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
anaconda如何查看并管理python环境
2019/07/05 Python
Python assert语句的简单使用示例
2019/07/28 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
文员自我评价怎么写
2013/09/19 职场文书
营销与策划应届生求职信
2013/11/04 职场文书
九九重阳节标语
2014/10/07 职场文书
先进班集体申报材料
2014/12/26 职场文书
继承公证书格式
2015/01/26 职场文书
2019销售早会主持词
2019/06/27 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang