1.Element节点概述

Element对象对应网页的HTML标签元素。每一个HTML标签元素,在DOM树上都会转化为Element节点对象。元素节点的nodeType属性都是1,但是不同的Element节点,比如a标签的节点对象由HTMLAnchorElement()构造函数生成,button标签的节点对象由HTMLButtonElement()构造函数生成。因此,元素节点不是一种对象,而是一组对象。

2.属性

2.1. attributes

返回一个类似数组的对象,成员是当前元素节点的所有属性节点。每个数字索引对应一个属性节点。返回值中,所有成员都是动态的,即属性变化会实时反应在结果集。

<div id="BOX" aitao ="xtt" lml="LML" class="BOX">
    <div class="box">1</div>
</div>
let boxs = x.attributes;//这句话的意思就是获取这个BOX对象下的所有属性
console.log(boxs);//输出 id aitao lml class

通过attribute属性获取属性节点对象以后,可以通过name(nodeTypename)属性获取属性名,value(nodeTypeValue)属性获取属性值。

2.2 id属性

id属性返回指定元素的id标签。该属性可读写

2.3 tagName属性

返回指定元素的大写标签名

var span = document.getElementById("span");
span.tagName // "SPAN

2.4 innerHTML

返回改元素包含的HTML代码,可读写,常用来设置某个节点的内容。如果该属性为空,等于删除它包含的所有节点
注意:如果文本节点中包含&,<,>,%,innerHTML会将它们转换为实体形式&amp。由于这个原因,插入script标签不会执行。
如果插入的是文本,最好使用textContent

2.5 innerOut

返回一个字符串,内容为指定元素的所有HTML代码,包含它本身和包含的所有子元素
可读写,赋值等于替换当前元素

3.children,childElementCount,firstElementChild,lastElementChild

3.1 children

属性返回一个类似数组的动态对象,包括当前元素节点的所有子元素。如果当前元素没有子元素,则返回的对象包含0个成员。

3.2 childElementCount

返回当前元素的子元素的个数

3.3 firstElementChild

返回第一个子元素,如果没有返回null

3.4 lastElementChild

返回最后一个子元素,如果没有返回null

4.nextElementSibling,previousElementSibling

4.1 nextElementSibling

返回指定元素的后一个同级元素,如果没有返回null

var el = document.getElementById('div-01');
el.nextElementSibling

4.2 previousElementSibling

返回指定元素的前一个同级元素,如果没有则返回null

5.className classList

5.1 className

值是一个字符串,读取和设置当前元素的class属性,每个类名之间用空格分隔

5.2 classList

返回一个类似数组的对象,当前元素节点的每个class就是这个对象的一个成员
有下列方法
add():增加一个class
remove():移除一个class
contains():检查当前元素是否包含某个class
toggle():将某个class移入或移出当前元素
item():返回指定索引位置的class
toString():将class的列表转为字符串

className和classList在添加和删除某个类的写法

// 添加class
document.getElementById('foo').className += 'bold';
document.getElementById('foo').classList.add('bold');
 
// 删除class
document.getElementById('foo').classList.remove('bold');
document.getElementById('foo').className document.getElementById('foo').className.replace(/^bold$/, '')

toggle方法可以接受一个布尔值,作为第二个参数。如果为true,则添加该属性;如果为false则去除该属性。

6.clientHeight,clientLeft,clientTop,clientWidth

6.1 clientHeight

返回元素节点的可见高度,包括padding,但不包括水平滚动条,边框和margin的高度,单位为像素。该属性可以计算得到,等于元素的CSS的高度,加上CSS的padding高度,减去水平滚动条的高度。

6.2 clientLeft

等于元素节点左边框的高度,包括垂直滚动条的宽度,不包括左侧的margin和padding。如果该元素的显示设为display:inline,clientLeft一律为0,不管是否存在左边框

6.3 clientTop

等于网页元素顶部边框的宽度,不包括顶部的margin和padding

6.4 clientWidth

等于网页元素的可见宽度,包括padding,但不包括垂直滚动条,边框和margin的宽度,单位为像素。

以下属性与元素占据的总区域的坐标相关scrollHeight,scrollWidth,scrollLeft,scrollTop

scrollHeight

返回指定元素的总高度,包括由于移除而无法展示在网页的不可见部分。如果一个元素是可以滚动的,则scrollHeight包括整个元素的高度,不管是否存在垂直的滚动条。scrollHeight属性包括padding,但不包括border和margin,该属性为只读属性。

如果不存在滚动条,scrollHeight属性与clientHeight属性是相等的。如果存在scrollHeight属性总是大于clientHeight属性,当滚动条滚动到内容底部时,下面表达式为true

element.scrollHeight - element.scrollTop === element.clientHeight

scrollWidth

返回元素的总宽度,包括由于溢出容器而无法显示在网页上的那部分宽度,不管是否存在水平滚动条。该属性是只读属性

scrollLeft

设置或返回水平滚动条向右侧滚动的像素数量。它的值等于元素的最左边与可见最左侧之间的距离,对于没有滚动条或不需要滚动条的元素,该属性等于0.该属性是可读写属性,设置该属性的值,会导致浏览器将指定元素的自动滚动到响应的位置。

scrollTop

设置或返回垂直滚动条向下滚动的像素数量。它的值等于元素的顶部与其可见的最高位置之间的距离,对于那些没有滚动条或不需要滚动的元素,该属性等于0。该属性是可读写属性
设置该属性的值,会导致浏览器将指定元素自动滚动到响应的位置

document.querySelector('div').scrollTop = 150;

6 方法

6.1 hasAttribute(),getAttribute(),removeAttribute(),setAttribute()

6.1.1 hasAttribute()

返回一个布尔值,表示当前元素节点是否包含指定的HTML属性

6.1.2 getAttribute()

返回当前元素节点的指定属性,如果不存在,则返回null

var div = document.getElementById('div1');
div.getAttribute('align') // "left"

6.1.3 removeAttribute()

用于从当前元素节点移除属性

setAttribute()

用于为当前元素节点新增属性,或编辑已存在的属性

var d = document.getElementById('d1');
d.setAttribute('align', 'center');

6.2 querySelector(),querySelectorAll(),getElementsByClassName(),getElementsByTagName()

6.2.1 querySelector()

接受CSS选择器作为参数,返回父元素的第一个匹配的子元素

6.2.2 querySelectorAll()

接受CSS选择器作为参数,返回一个NodeList对象,包含所有的匹配的子元素

6.2.3 getElementsByClassName()

返回一个HTMLCollection对象,成员是当前元素节点的所有匹配指定class的子元素。

6.2.4 getElementsByTagName()

返回一个HTMLCollection对象,成员是当前元素节点的所有匹配指定标签名的子元素。

6.3 closet(),matches()

6.3.1 closet()

返回当前元素节点的最接近的父元素或者当前节点本身 ,条件是必须匹配给定的CSS选择器,如果匹配失败,则返回null

6.3.2 match()

返回一个布尔值,表示当前元素是否匹配给定的CSS选择器

6.4 addEventListener(),removeEventListener(),dispatchEvent()

**// 添加事件监听函数
el.addEventListener('click', listener, false);
 
// 移除事件监听函数
el.removeEventListener('click', listener, false);
 
// 触发事件
var event = new Event('click');
el.dispatchEvent(event);**

6.4.1 remove()

用于将当前元素节点从DOM树删除