关于解决IE8以下版本获取DOM节点的方法

关于解决IE8以下版本获取DOM节点的方法

     在前端开发中用 jshtml 进行操作,在获取DOM节点的时候我们会用到类选择器,但是类选择器并不是能够在所有的浏览器下正常运行,或许大家已经猜到,没错就是IE(8以下),或许有人会所现在谁还用IE,但是作为一个程序员,在遇到问题我们都应该去寻找解决的方法,那我们就得自己来封装获取类名节点的方法,下面是我自己的一些方法。


下面是我代码:

<style>
    .box{
      width: 200px;
      height: 200px;
      background-color: red;
    }
  </style>
</head>
<body>
  <div class="box"></div>
  
</body>

首先创建一个div,给其默认样式,效果如下;

当我们用各个浏览器都可以获得类名DOM节点,但是IE8一下就死这种情况:


所以,我们就得自己来封装一个函数,来获取html中的DOM操作节点。

代码如下:


<script type="text/javascript">
if (!document.getElementsByClassName) {                                                 //如果浏览器不支持document.getElementsByClassName
  document.getElementsByClassName = function (className, element) {                     //我们先将要写的方法封装成一个函数
      var children = (element || document).getElementsByTagName('*');                   //获取html中所有的DOM节点 
      var elements = [];                                                                //用一个空数组存放要获取的class类名
      for (var i = 0; i < children.length; i++) {
          var child = children[i];                                                        
          var classNames = child.className.split(' ');                                    //将所有的class节点保存在一个数组之中
          for (var j = 0; j < classNames.length; j++) {                                 //遍历循环,将满足要求的class存入elements空数组中
              if (classNames[j] == className) {
                  elements.push(child);
                  break;
              }
          }
      }
      return elements;                                                                    //返回新的数组
  };
}
var a = document.getElementsByClassName("box");
console.log(a);
a[0].style.background = "blue";
</script>

整体思路:

1.先判断是否支持 document.getElementsByClassName 直接获取class DOM节点
2.先获取html所有的DOM节点,并新建一个数组存放需要获取的class 类名
3.循环遍历,将满足要求的class存入elements空数组中
4.返回我们得到的新的数组,这个数组就是我们存放类名的数组

我们先看下 a 打印出来的什么什么

很显然打印出来的是一个数组对象,那么我们就可以通过索引对class进行操作了;

下面是我执行的结果:

这就证明我们用类名对html进行了操作节点进行了操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值