1. getElementById() getElementsByTagName()  javascript原生的方法,这两个不会有兼容性问题。

2. getElementsByClassName()是HTML5的DOM API ,IE8及以下不支持(不支持HTML5的浏览器)。

对于现代浏览器,document.getElementsByClassName( 'wrap' )获取的是DOM中所有class为wrap的元素

在IE8及以下,可以模拟实现这种效果

function getElementsByClassName(oParent, tagName, className) {
  if(document.getElementsByClassName ){     //现代浏览器

    return oParent.getElementsByClassName(className );

  }else{     //IE8以下

    var aEls = oParent.getElementsByTagName(tagName);
    var arr = [];
    for (var i=0; i<aEls.length; i++) {
      var arrClassName = aEls[i].className.split( ' ' );
      for (var j=0; j<arrClassName.length; j++) {
        if ( arrClassName[j] == className ) {
          arr.push(aEls[i]);
          break;
        }
      }
    }
    return arr;

  }

}

例如:

<ul>

  <li class="box1 box2">1</li>

  <li class="box3 box5">1</li>

  <li class="box4">1</li>

  <li class="box1 box1">1</li>

</ul>

  getElementsByClassName(document, 'li', 'box1');


3. querySelector() querySelectorAll()也是HTML5的DOM API ,IE8以下不支持(不支持HTML5的浏览器)。

  querySlector() 接受一个css选择器作为参数,然后返回DOM中匹配的第一个元素。

  querySelectorAll()接受一个css选择器作为参数,然后返回DOM中匹配的元素的集合。

  document.querySlector('.wrap')获取的是DOM中第一个class为wrap的元素。

  document.querySlector('p')获取的是DOM中第一个p元素。

  document.querySelectorAll('.wrap')获取的是DOM中class为wrap的元素集合。

  document.querySelectorAll('p')获取的是DOM中p元素集合。

getElementById() getElementsByTagName() getElementsByClassName() querySlector() querySlectorAll()区别的更多相关文章

  1. JavaScript中querySelector()和getElementById()(getXXXByXX)的区别

    在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...

  2. document.getElementById(), getElementsByname(),getElementsByClassName(),getElementsByTagName()方法表示什么以及其意义

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别

    Web标准下可以通过getElementById(), getElementsByName(), and getElementsByTagName()访问Documnent中的任一个标签:   1 g ...

  4. autohotkey 自动登录输入用户名密码 getElementsByTagName/getElementsByClassName/getElementById

    针对button未设置id的.可以通过getElementsByTagName获取button的对象数组,再明确其在对象数组中的位置,如第4个button,通过[3]获取.再调用此对象的click() ...

  5. document.getElementById和document.querySelector的区别

    zepto中的$(".111")出错,jQuery中$(".111")不出错的原因: zepto用document.querySelector实现,jQuery ...

  6. getElementById和querySelector方法的区别

    "querySelector 属于 W3C 中的 Selectors API 规范 .而 getElementsBy 系列则属于 W3C 的 DOM 规范" 1.区别 getXXX ...

  7. document.getElementById(“id”)与$("#id")的区别

    document.getElementById("id")可以直接获取当前对象, jQuery利用$("#id")获取的是一个[object Object],需 ...

  8. getElementsByTagName("div")和$("div")区别

    作者:zccst <body> <div class="selected">1</div> <div class="select ...

  9. js中script的上下放置区别 , Dom的增删改创建

    回顾 javascript分为三部分: 1.ECMAScript5.0 es6(阮一峰) es7 es8 es6中有类的概念 声明变量 var let(es6中语法) 内置函数 Date Math.r ...

随机推荐

  1. Spring声明式事务管理

    一.Spring 的声明式事务管理概述 1.Spring 的声明式事务管理在底层是建立在 AOP 的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法 ...

  2. [汇编与C语言关系]5. volatile限定符

    现在研究一下编译器优化会对生成的指令产生什么影响,在此基础上介绍C语言的volatile限定符.首先看下面的C程序: /* artificial device registers */ unsigne ...

  3. 在 ML2 中配置 VXLAN - 每天5分钟玩转 OpenStack(110)

    上一节我们介绍了 VXLAN 的基本概念,今天介绍如何在 ML2 中启用 VXLAN. 在 /etc/neutron/plugins/ml2/ml2_conf.ini 设置 vxlan network ...

  4. Java多线程系列--“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁Reentrant ...

  5. C#: 向Word插入排版精良的Text Box

    Text Box(文本框)是Word排版的工具之一.在Word文档正文的任何地方插入文本框,可添加补充信息,放在合适的位置,也不会影响正文的连续性.我们可以设置文本框的大小,线型,内部边距,背景填充等 ...

  6. 1Z0-053 争议题目解析698

    1Z0-053 争议题目解析698 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 698.In your production database, you: -Are using ...

  7. struts2学习笔记--使用Validator校验数据

    我们在进行一些操作是需要对用户的输入数据进行验证,比如网站的注册,需要对各个数据项进行数据校验,Struts2提供了一些默认的校验器,比如数字的检测,邮箱的检测,字符串长度的检测等等. 常用的Vali ...

  8. windows8.1 安装Redis

    说点什么 现在互联网都在玩高大上的分布式缓存,或是分布式数据库,去面试的时候也会问些相关知识及应用场景,再没玩过就要out了.  Redis官方只提供了Linux的版本下载,windows的需要去gi ...

  9. Circuit Breaker Pattern(断路器模式)

    Handle faults that may take a variable amount of time to rectify when connecting to a remote service ...

  10. 我对Backbone.js的一些认识

    backbone.js已经不是当前最流行的前端框架了,但是对于我而言,依然具有比较好的学习价值.虽然目前来说,react,vue等mvvm框架非常火热,但是感觉自身还不到去使用这种框架的层次.这些技术 ...