【JavaScript兼容】关于IE8及以下无法通过getElementsByClassName()方法获得元素的解决方法

try{
   var a = document.getElementsByClassName("cla");
     console.log(a);
}catch(ex){  var array = [];  
    for(var i = 0;i<document.body.childNodes.length;i++){
        if(document.body.childNodes[i].nodeType === 1){
              var name = document.body.childNodes[i].className;
              if(name.search(/cla/) != -1){
                   array.push(document.body.childNodes[i]);
              }
       }
    }
    console.log(array);}
        

通过HTML自带特性可以获取来得到对应的class的元素。这里我们可以看到,document.body.childNodes不断在用到,因此进行简单优化

            var allNodes = document.body.childNodes;
            for(var i = 0,lg=allNodes.length;i<lg;i++){
                if(allNodes[i].nodeType === 1){
                    var name = allNodes[i].className;
                    if(name.search(/cla/) != -1){
                        array.push(allNodes[i]);
                    }
                }
            }
            console.log(array.join(" "));        
时间: 2024-08-27 16:22:51

【JavaScript兼容】关于IE8及以下无法通过getElementsByClassName()方法获得元素的解决方法的相关文章

IE8 浏览器文本模式变为杂项(quirks)页面变形的解决方法

IE8 浏览器文本模式(document.documentMode)变为杂项(quirks)页面变形的解决方法. 正常情况下 document.documentMode 输出为8,而变为杂项之后document.documentMode输出为5. 检查文件头 1.书写是否正确 定义IE8 文本模式为IE8<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">IE8 文本模式为杂项(quirks):无定义

WIN7+IE8环境QTP11不能录制和识别web对象的解决方法

在项目稍微空闲的时间,在办公电脑上面装上QTP11来学习.但是发现在录制脚本时无法录制web对象,在网上找解决方法说以管理员的身份运行QTP就可以解决无法录制的问题,用这方法证明是ok的.后来用Object spy工具识别web对象还是不行的,网上大部分解决方法是说BHOManager Class加载引起的,但是我查看我的IE浏览器是正常加载的,还有的说是系统配置之类的问题,在这里就不再具体转述了.在百度下面查看了多篇文章后终于找到有效的解决方法,需要安装QTP11补丁文件QTPWEB_0007

关于javascript的parseInt() 08,09时输出结果为0的原因以及解决方法

先来贴图: 可以发现在使用parseInt()对字符串进行转换时,唯独“08”,“09”转换为0,而其他的都是转换成对应的数字,这到底是什么原因呢? 原来当字符串首位是“0”的时候,js默认其为8进制,所以问题来了,8进制数字只有0-7,所以前面的0-7都没有问题. 然而到了8和9问题就来了,8和9在8进制中是不合格的,所以将其输出为0. 解决方法: 将parseInt的参数加上,指定其转换为10进制就ok了. 唉,还是太年轻!

ie6,ie7,ie8 css bug兼容解决方法

IE浏览器以不支持大量的css 属性出名,同时也因其支持的css属性中存在大量bug. 这里收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 普通IE css bug bug名称 影响版本 描述 Image Label Focus Bug IE8,IE7,IE6 <img>元素在<label>元素之内,单击时,焦点不会转移到相应的表单控件 按钮Margin-A

ie6,ie7,ie8 css bug汇总以及兼容解决方法

1:li边距“无故”增加 任何事情都是有原因的,li边距也不例外. 先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑,仔细“研究”发现是由于其低级元素ul的padding引 起,padding的上下值对li有影响,左右无影 响.所以只好笨手笨脚地把padding去掉,换成margin.这是能解决问题,但往往不是我们想要的结果,或许 还会引起其他不必要的怪现象. 解决这个问题的方法,其实很简单,既然是有ul引 起的,就设置ul的显示形

【转】 IE6 IE7 IE8 css bug兼容性解决方法总结归纳

1:li边距“无故”增加 任何事情都是有原因的,li边距也不例外. 先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑,仔细“研究”发现是由于其低级元素ul的padding引 起,padding的上下值对li有影响,左右无影 响.所以只好笨手笨脚地把padding去掉,换成margin.这是能解决问题,但往往不是我们想要的结果,或许 还会引起其他不必要的怪现象. 现在终于发现解决这个问题的方法,其实很简单,既然是有ul引 起的,就设置

ie的兼容方法,条件注释的方法

1.终极方法:条件注释 <!--[if lte IE 6]> 这段文字仅显示在 IE6及IE6以下版本. <![endif]--> <!--[if gte IE 6]> 这段文字仅显示在 IE6及IE6以上版本. <![endif]--> <!--[if gt IE 6]> 这段文字仅显示在 IE6以上版本(不包含IE6). <![endif]--> <!--[if IE 5.5]> 这段文字仅显示在 IE5.5. <

一行代码解决各种IE兼容问题IE8,IE9,IE10

一:一.指定文件兼容性模式(Xee:因为我已经放弃IE6,7了,所以以后设计的网页最低支持IE8;) 要为你的网页指定文件模式,需要在你的网页中使用meta元素放入X-UA-Compatible http-equiv 标头. 1. 强制IE8使用IE8模式来解析,而且那个兼容性视图 按钮也被去掉了 <meta http-equiv="X-UA-Compatible" content="IE=8"> 2. Google Chrome Frame也可以让IE

jQuery兼容浏览器IE8方法

1.前言 在做前端开发的时候,公司的规范要求面向客户的兼容到IE8,但是在IE8模式下经常会发现各种错误,某某方法未定义.不支持某属性或对象等,使用jQuery的时候,jQuery从2.0开始不兼容IE8,最低支持IE9,所以需要引入更低的jQuery版本来兼容. 2.IE8不支持jQuery版本解决办法 通过判断IE浏览器的版本来加载对应版本的jQuery 使用语句<!--[if IE 8]> 仅IE8可识别 <![endif]--> 可在IE8模式下进行一些兼容操作.代码如下: