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

在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;
  };
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ie浏览器
解决方法
uc浏览器javascript、浏览器启用javascript、谷歌浏览器javascript、浏览器禁用javascript、浏览器javascript,以便于您获取更多的相关知识。

时间: 2024-08-19 03:02:38

IE浏览器不支持getElementsByClassName的解决方法_javascript技巧的相关文章

firefox浏览器不支持innerText的解决方法_javascript技巧

js代码: 复制代码 代码如下: <script> window.onload = function(){ <PRE class=javascript name="code">if(window.navigator.userAgent.toLowerCase().indexOf("msie")==0){ //firefox innerText HTMLElement.prototype.__defineGetter__( "inne

全系IE支持Bootstrap的解决方法_javascript技巧

最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在一个网友帖子的帮助下解决了问题,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响: 对标记attribu

js判断浏览器是否支持严格模式的方法_javascript技巧

设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度: - 为未来新版本的Javascript做好铺垫. "严格模式"体现了Javascript更合理.更安全.更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它. 另一方面,同样的代码,在"严格模式"中

关于Mozilla浏览器不支持innerText的解决办法_javascript技巧

比如: <p id="test"><strong><font color="red">Hello</font> , world!</strong></p> 我们使用代码:alert((document.getElementById("test")).innerText) 在IE.Chrome中,均能获取到"Hello , world!",但是在Firefo

window.open关于浏览器拦截问题分析及解决方法_javascript技巧

window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,不过一般用来的是打开新窗口,因为修改原来的网页地址,可以有另一个函数,那就是window.location,他可以重定向网页地址,使网页跳转到另一个页面. 我现在要说的是window.open函数的几个使用策略,一般情况下,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,认为你将弹出广告等用户不想得到的窗体,所以如果不想让浏览器拦截你,你可以将这个函数改为用户点

Win7系统IE浏览器不支持Cookie的解决方法

方法如下:   1.打开IE浏览器,点击上面的"工具"按钮,在弹出的下拉菜单中选择"Internet选项":     2.在Internet选项窗口界面中,切换至"隐私"项,滑动滑块设置为中,然后点击下面的"高级"按钮:     3.勾选"替代自动cookie处理"和"总是允许会话cookie,点击确定即可.     关于Win7系统浏览器不支持Cookie的解决方法就介绍到这里了,用户如果在使用

IE浏览器出现“您的浏览器不支持cookies功能”解决方法

  我们在登录某些网站的时候,IE浏览器有时候出现"您的浏览器不支持COOKIES功能"的提示,导致登录失败.这里收集整理了此问题的解决方法: 从"工具"菜单中选择"Internet 选项". 单击"隐私"标签. 单击"高级"按钮,按下列步骤进行设置. 设置完成,重新启动IE即可.(关闭IE再次重新打开) 1:第一步 2:第二步 3:第三步         注:更多精彩教程请关注三联电脑教程栏目

Javascript iframe交互并兼容各种浏览器的解决方法_javascript技巧

在Web前端开发中,我们经常会用到iframe这个控件. 但是这个控在内.外交互时,往往各个浏览器所用的关键字不同,很是麻烦,为了能够得到子iframe中的window对象,各家浏览器有着各家的指定,有的是window,有的是contentWindow等等也许还有我们不知道的. 但是从子页面访问父层页面,其本上大家都是window.parent就可以了. 那么通过这个特征,我们可以在子页面中,把自身的window对象传递给父页面就可以了,这样父页面就很轻松的访问子页面,再也不用靠虑如何从ifra

Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法_javascript技巧

遇到的问题: laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的问题(safari下也有同样问题); 解决办法: 给laydate绑定id; 解决前代码: <input id="startTime" placeholder="请输入开始时间" class="laydate-icon" onClick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss'