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 相关文章推荐
js控制input输入字符解析
Dec 27 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
微信小程序开发之map地图实现教程
Jun 08 Javascript
JS查找数组中重复元素的方法详解
Jun 14 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
Apr 11 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 Javascript
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
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
python实现360的字符显示界面
2014/02/21 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
2013的个人自我评价
2013/12/26 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
体育课外活动总结
2014/07/08 职场文书
年检委托书
2014/08/30 职场文书
企业百日安全活动总结
2015/05/07 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技