DOM中的增删改查之查找

一.查找元素

1. 不需要查找就可以直接获得的元素

      //document.documentElement ***
       <html></html>
      //document.head
      <head></head>
      //document.body
      <body></body>

2. 按节点间关系查找

1.节点.parentNode 获得当前节点的父节点
2.父节点.childNodes 获得当前父节点下的所有直接子节点的集合(类数组对象)
3.父节点.firstChild 获得当前父节点下的第一个直接子节点.
4.父节点.lastChild 获得当前父元素下最后一个子节点
5.节点.previousSibling 获得当前节点平级的前一个相邻兄弟的节点.
6.节点.nextSibling 获得当前节点平级的下一个相邻兄弟的节点

注意:看不见的换行和空字符同样是节点对象,会严重干扰查找,所以我们通常采用元素树(即元素间关系查找).

3. 按元素间关系查找

1.元素.parentElement(也可以用parentNode) 获得当前元素的父元素
2.父元素.children获得当前父元素下的所有直接子元素的集合(类数组对象)
3.父元素.firstElementChild 获得当前父元素下的第一个子元素
4.父元素.lastElementChild 获得当前父元素下的最后一个直接子元素
5.元素.previousElementsibling 获得当前元素平级的前一个相邻元素
6.元素.nextElementsibling 获得当前元素平级的下一个相邻元素

当我们已经获得一个节点(元素时),想要查找周围的元素,就用节点(元素间关系查找)

4.按HTML特征查找

1.按id属性查找
    var 元素=document.getElementById("要查找的id属性")
    如果找到,返回一个元素对象,没找到返回null(空)
    强调:只能用document调用,不能随意使用父元素调用
    特别注意:id如果
2. 按标签名查找
	var 集合=父元素.getElementsByTagName("标签名")
	在指定父元素下查找所有标签名为指定标签名的后代元素。
	   返回值: 如果找到,返回多个元素组成的集合
			如果没找到,返回空集合: [].length=0
			强调: 
			a. 可在任意父元素下查找。通常指定在某个父元素下查找后代,是为了减少查找范围,提高查找效率。
			b. 不止查找直接子元素,而是在所有后代中查找。
			3. 按class属性查找
	var 集合=父元素.getElementsByClassName("类名")
	在指定父元素内,查找class属性中包含指定类名的所有元素
	返回值: 如果找到,返回多个元素组成的集合
		    如果没找到,返回空集合: [].length=0
	     	强调: 如果网页中的id元素没有与js中的元素重复,即直接编程windows全局变量,可直接使用,但不建议这么做(有兼容性问题)
			a. 可限制在任意父元素内查找,减少查找范围。
			b. 不仅查找直接子元素,且在所有后代中查找。
			c. 如果一个元素同时被多个class修饰,则使用其中一个class,就可找到该元素。无需所有class都满足
			4. 按name属性查找
	var 集合=document.getElementsByName("name名")
	在整个网页中查找name属性值为指定name名的元素。
		返回值: 如果找到,返回多个元素组成的集合
			如果没找到,返回空集合: [].length=0
		强调: 只能用document调用,不能用随意一个父元素调用。
		何时: 在表单中查找表单元素时
	问题: 所有返回集合的查找函数,在任何情况下都会返回一个集合。即使只找到一个元素,也放在一个集合中返回。

5.按选择器查找

    a. 只查找一个符合条件的元素:
		var 元素=父元素.querySelector("任意复杂的选择器")
		在指定父元素下查找符合选择器要求的一个元素
		返回值: 如果找到,返回一个元素对象
				如果没找到,返回-1
	2. 查找多个符合条件的元素: 
		var 集合=父元素.querySelectorAll("任意复杂的选择器")
		在指定父元素下查找符合选择器要求的多个元素
		返回值: 如果找到,返回多个元素的集合
				如果没找到,返回空集合: [].length=0
	强调: 1. 可以以任意父元素调用来限制查找的范围
		2. ()中的选择器参数,不用每次都写完整。只要以.前的父元素为起点开始写就行!

6.css查找:详情请看DOM修改那篇文章
总结:

  1. 不需要查找就可直接获得:
    document.documentElement
    document.head
    document.body
  2. 按节点间关系查找:
    1. 父子关系;
      元素.parentNode
      父元素.children
      元素.firstElementChild
      元素.lastElementChild
    2. 兄弟关系:
      元素.previousElementSibling
      元素.nextElementSibling
  3. 按HTML特征查找:
    var 元素=document.getElementById(“id”)
    var 集合=父元素.getElementsByTagName(“标签名”)
    var 集合=父元素.getElementsByClassName(“class名”)
    var 集合=document.getElementsByName(“name名”)
  4. 按选择器查找:
    var 元素=父元素.querySelector(“任意选择器”)
    var 集合=父元素.querySelectorAll(“任意选择器”)

DOM优化之一:
如果只用一个条件就可以找到想要的元素时
首选使用getElementsByXXX()函数查找——效率高
只有查找条件复杂时,才选择按选择器查找——效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值