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 06 Javascript
Jquery 常用方法经典总结
Jan 28 Javascript
Js 刷新框架页的代码
Apr 13 Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
Mar 05 Javascript
基于javascript实现仿百度输入框自动匹配功能
Jan 03 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
node.js + socket.io 实现点对点随机匹配聊天
Jun 30 Javascript
JS实现websocket长轮询实时消息提示的效果
Oct 10 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
JavaScript中window和document用法详解
Jul 28 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
2019/04/08 PHP
让您的菜单不离网站
2006/10/03 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
JS与C#编码解码
2013/12/03 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
魅力教师事迹材料
2014/01/10 职场文书
晚宴邀请函范文
2014/01/15 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
股东出资证明书范例
2014/10/04 职场文书
医者仁心观后感
2015/06/17 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python