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 相关文章推荐
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
Apr 13 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 Javascript
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 Javascript
基于Vue实现timepicker
Apr 25 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
vue axios post发送复杂对象问题
Jun 04 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
Nov 24 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
微信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动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
python批量制作雷达图的实现方法
2016/07/26 Python
python3实现点餐系统
2019/01/24 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
高二生物教学反思
2014/01/27 职场文书
秋天的图画教学反思
2014/05/01 职场文书
消防宣传口号
2014/06/16 职场文书
九九重阳节标语
2014/10/07 职场文书
介绍信样本
2015/01/31 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python