DOM

DOM

DOM是”Document Object Model”的首字母缩写,即文档对象模型。用来描绘一个层次化的节点树,允许开发人员获取、添加、移除和修改页面的某一部分元素。

节点:元素节点element,属性节点attribute,文本节点text

获取DOM元素

document:文档的意思,代表浏览器内部的最大的区域。代表整个的html文件。

获取document对象:document

获取html元素对象:document.documentElement

获取body元素对象:document.body

获取head,title:document.head / document.title

getElementById(): 获取特定 ID 元素的节点--最优

getElementsByTagName():通过标签名获取元素,获取相同元素的节点列表,返回类数组,使用[下标]来获取(没有下标就是集合)

getElementsByClassName(): 获取相同类名的节点列表(IE8及以下不支持),返回类数组

querySelector():获取一个, 通过选择器获取元素,如果获取多个只返回第一个。

querySelectorAll():获取多个, 通过选择器获取元素,可同时获取多个元素,类数组。

获取DOM属性

三个方法操作默认属性以及自定义的属性。

自定义属性:自己定义的用于传输数据的属性。

getAttribute()获取特定元素节点属性的值,某些低版本浏览器不支持

setAttribute()设置特定元素节点属性的值,某些低版本浏览器不支持

removeAttribute()移除特定元素节点属性,某些低版本浏览器不支持

innerHTML:读写元素节点里的内容,从节点的起始位置到终止位置的全部内容,包括内部的元素。

outerHTML:读写元素节点里的内容,除了包含innerHTML的全部内容外, 还包含元素节点本身。

innerText:读写某个元素节点的文本内容

DOM节点

DOM 就是我们 html 结构中一个一个的节点构成的

不光我们的标签是一个节点,我们写的文本内容也是一个节点,注释,包括空格都是节点

DOM 的节点我们一般分为常用的三大类 元素节点 / 文本节点 / 属性节点

比如我们在获取元素的时候,通过各种方法获取到的我们叫做元素节点(标签节点)

比如我们标签里面写的文字,那么就是文本节点

比如写在每一个标签上的属性,就是属性节点

获取DOM节点

document.querySelector()/document.querySelectorAll():获取标签节点

childNodes:获取某一个节点下所有的子一级节点,包含空白节点(文本节点),类数组。

children :获取某一节点下所有的子一级 元素节点,不包含空白节点,类数组。

获取子节点

firstChild:获取某一节点下子一级的第一个节点,包含空白节点

firstElementChild:获取某一节点下子一级 第一个元素节点,不包含空白节点

lastChild:获取某一节点下子一级的 最后一个节点

lastElementChild:获取某一节点下子一级 最后一个元素节点

nextSibling:获取某一个节点的下一个兄弟节点, 包含空白节点

nextElementSibling:获取某一个节点的 下一个元素节点, 不包含空白节点

parentNode:获取某一个节点的 父节点

getAttributes:获取某一个元素节点的所有属性节点

节点属性

节点:元素节点,属性节点,文本节点...

每一个节点又包含三个属性。

nodeType:获取节点的节点类型,用数字表示 1元素 2属性 3文本

nodeName:获取节点的节点名称

nodeValue: 获取节点的值

节点操作

查找元素

document.querySelector()

document.querySelectorAll()

创建元素-createElement('创建的标签名')

追加元素-appenChild()

格式: 父元素.appendChild(创建的元素)将创建的元素追加到父元素内部的最下面。

DOM.insertBefore(新的节点, 存在的节点) 在box内,把新的节点节点插入到存在的节点的前面

DOM.removeChild(node) 删除box内部的子节点

DOM.cloneNode() 克隆obj节点,可以传一个布尔值为参数,如果参数为true,连同obj子元素一起克隆。

获取元素的非行间样式

getComputedStyle(标准浏览器) || currentStyle(IE 浏览器)

这两个方法的作用是一样的,只不过一个在 非 IE 浏览器(标准浏览器),一个在 IE 浏览器

window.getComputedStyle(oBox)['width']||Obj.currentStyle.width

设置css属性和值

逐个添加-注意单位

Obj.style.width = '200px'

整体添加-用css文本的形式

Obj.style.cssText = '正常的css代码';

所有设置的css属性都将添加到元素(标签)的行间样式,优先级是比选择器要高。

利用js提供的属性获取常见css值

offsetLeft 和 offsetTop 值是没有单位。

获取的是元素左边的偏移量和上边的偏移量(盒子相对于页面的距离)

嵌套,如果父级有定位,以父级为基准。如果父级没有定位,以html为基准

offsetWidth 和 offsetHeight 盒模块的宽高。没有单位

获取元素 内容宽高 + padding宽高 + border宽高 的和

原文地址:https://www.cnblogs.com/zlf1914/p/12801731.html