获取DOM节点方法getElementById() 2. getElementsByName() 3. getElementsByTagName() 等

595 阅读2分钟

在传统的开发中获取节点元素的方法主要有:

  1. getElementById()
  2. getElementsByName()
  3. getElementsByTagName()
  4. getElementsByClassName()
  5. querySelector()
  6. querySelectorAll()

document是一个对象,上面序号1~6都是它里面的一个方法

  • 注意:IE8及以下的浏览器不区分属性名大小写,并且通过document.getElementById('box')也能找得到<div name="box">哈哈哈<div>元素,(我是傻了才在div里添加name属性哈哈哈)需要注意兼容性问题。

以下主要记录一下他们的一些细节问题

例一

  • getElementByTagName()
  • getElementByClassName()

  • getElementsByName() -->用的很少,他是通过name属性获取的

以上三个获取到的元素是以类数组的形式存储,哪怕获取到的节点只有一个也是以类数组方式存储(类数组是一个对象而不是真正的数组),因为用数组的方法push会报错(看下图)。个人理解和函数传入多个实参argument差不多。 而getElementById()则不是

例二

  • querySelector()
  • querySelectorAll()
  • 可通过的是id、class或标签获取元素,在括号内的写法与CSS选择器类似,如document.querySelector('#test')、document.querySelector('.test')\document.querySelectorAll('div')。
  • 虽然HTML5才正式将他们新引入的web API规范中 但是它们很久以前就已经存在了,所以兼容性比例一的还好,能兼容到IE7。但是也有致命的缺点-->
  • 缺点一:性能比前面的差,他们比前面四个查询节点慢很多,所有少有人用
  • 缺点二:涉及到变化时不能用了

querySelector() 在有多个相同id、class还是标签querySelector()只获取到第一个元素

  1. 获取直系<p>子元素情况
    对比图-->
  • querySelectorAll()
  • 则是把所有的都获取,并且以类数组存储,哪怕获取到的节点只有一个也是以类数组方式存储

本篇文章纯属于个人的学习总结,如果文章中出现错误或不严谨的地方,希望大家能够指出,谢谢!