IE浏览器不支持getElementsByClassName的解决方法


Posted in Javascript onAugust 27, 2014

在DOM3里已经加入了getElementsByClassName这个方法,然而IE9、10以外的其它版本均不支持,这是一块伤痛啊!
目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管;如果不支持,就在document对象里加入getElementsByClassName这个方法,这样的写法有一个好处,即不管有没有原生函数你都不用去修改代码。

网上部分人直接定义一个getElementsByClassName函数,但是这样的话就需要把代码中所有使用document.getElementsByClassName改写成getElementsByClassName。多少有点不方便,也不通用。

下面的方法完美支持了document写法:

if(!document.getElementsByClassName){
  document.getElementsByClassName = function(className, element){
    var children = (element || document).getElementsByTagName('*');
    var elements = new Array();
    for (var i=0; i<children.length; i++){
      var child = children[i];
      var classNames = child.className.split(' ');
      for (var j=0; j<classNames.length; j++){
        if (classNames[j] == className){ 
          elements.push(child);
          break;
        }
      }
    } 
    return elements;
  };
}
Javascript 相关文章推荐
5款Javascript颜色选择器
Oct 25 Javascript
js中opener与parent的区别详细解析
Jan 14 Javascript
JavaScript闭包详解
Feb 02 Javascript
js实现YouKu的漂亮搜索框效果
Aug 19 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
Nov 20 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
Apr 26 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
vue slot 在子组件中显示父组件传递的模板
Mar 02 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
Aug 08 Javascript
Vue实现简单购物车功能
Dec 13 Vue.js
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 #Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 #Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 #Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 #Javascript
JavaScript中输出标签的方法
Aug 27 #Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 #Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 #Javascript
You might like
剧场版动画《PSYCHO-PASS 3 FIRST INSPECTOR》3月27日日本上映!
2020/03/06 日漫
PHP4(windows版本)中的COM函数
2006/10/09 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
php基础教程
2015/08/26 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
Python中的引用知识点总结
2019/05/20 Python
python 修改本地网络配置的方法
2019/08/14 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
生日宴会主持词
2014/03/20 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
期末考试复习计划
2015/01/19 职场文书
学校教学管理制度
2015/08/06 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书