前端缺查补漏5day

发布于 2023-03-10  621 次阅读


js DOM

DOM:文档对象模型(Document Object Model),它是js操作HTML文档的接口,使文档变得非常优雅。

DOM最大的特点是将文档变成节点树;

nodeType

nodeType属性可以显示节点的具体类型;

nodeType值节点类型
1元素节点
3文字节点
8注释节点
9document节点
10DTD节点
nodeType常用属性值

访问元素节点

访问元素节点就是得到、获取页面上的元素节点。主要依靠document对象;

几乎所有的DOM功能都封装在document对象中,document对象也代表整个HTML文档,它是节点树的根;

访问元素节点常用的方法

方法功能兼容性
document.getElementById()通过ID得到元素IE6
document.getElementsByTagName()通过标签名得到元素数组IE6
document.getElementsByClassName通过类名得到元素数组IE9
document.querySelector()通过选择器得到元素IE8部分兼容
IE9完全兼容
document.querySelectorAll()通过选择器得到元素数组IE8部分兼容
IE9完全兼容
访问元素节点的常用方法

getElementById

如果页面上有相同的id元素,则只能得到第一个。

延迟运行

在测试DOM代码时,通常JS代码要放在html节点后,否则js无法找到html节点

可以使用window.onload = function(){}事件,使页面加载完毕后再执行指定代码。

getElementsByTagName()

数组方便遍历,可以批量操控元素节点。

任何一个节点元素也可以调用该方法,从而得到其内部的某种类元素节点。

getElementsByClassName()

该方法从IE9开始兼容

任何一个节点元素也可以调用该方法,从而得到其内部的某类名的元素节点。

querySelector()

它只能得到页面上的一个元素,有多个符合条件的元素,它只能获取第一个;

从IE8开始兼容,但是从IE9开始支持css3选择器。

节点的关系

子节点对于父节点来说叫:ChildNodes;第一个子节点叫firstChild;最后一个子节点叫:lastChild

父节点对于子节点来说叫:parentNode;

子节点的前一个兄弟节点叫:previousSibling

子节点的后一个兄弟节点叫:nextSibling

注意文本节点也属于节点;在标准的W3C规范中,空白文本节点也算作节点。但是在IE8以前具有兼容性问题。

排除文本节点的干扰

关系考虑所有节点只考虑元素节点
子节点childNodeschildren
父节点parentNodeparentNode
第一个子节点firstChildfirstElementChild
最后一个子节点lastChildlastElementChild
前一个兄弟节点previousSiblingpreviousElementSibling
后一个兄弟节点nextSiblingnextElementSibling
从IE9开始支持只考虑元素节点的属性

改变元素节点的内容

1、innerHTML,它可以以HTML语法来设置元素节点内的内容

2、innerText,只能以纯文本的形式设置节点的内容

改变元素节点的CSS样式

比如:box.style.backgroundColor='red';

css属性要写成驼峰形式;css属性值要设置完整形式;要写单位;

改变元素节点的HTML属性

标准的W3C属性,比如src、href,直接用打点进行更改;

oImg.src='images/2.jpg';

不符合W3C标准的属性,用setAttribute()和getAttribute()来设置、读取;

节点的创建、移除、克隆

创建

document.createElement()方法来创建一个指定tagname的html元素;

var oDiv = document.createElement('div');

新创建的节点是“孤儿节点”,它并没有被挂载到DOM树上。

必须使用appenChild()或insertBefore()方法将孤儿节点挂载到DOM树上

appendChild()

任何已经在DOM树上的节点,都可以调用appendChild()方法,它可以将孤儿节点挂在到它的内部,成为它最后一个子节点;

父节点.appendChild(孤儿节点);

insertBefore()

任何已经在DOM树上的节点,都可以调用insertBefore()方法,它可以将孤儿节点挂在到它的内部,成为它成为标杆节点的前一个子节点;

父节点.insertBefore(孤儿节点,标杆节点);

移动节点

如果将已经挂载到DOM的节点成为appendChild()或者insertBefore()的参数。这个节点将会被移动。这意味着一个节点不能同时位于DOM树的两个位置。

删除节点

removeChild()方法从DOM树上删除一个子节点;节点不能自己删除自己,只能父节点删除。

克隆节点

cloneNode()方法可以克隆节点,克隆出的节点是孤儿节点。

var 孤儿节点 = 老节点.cloneNode();

var 孤儿节点 = 老节点.cloneNode(true);

参数是一个布尔值,表示是否采用深度克隆,如果采用可克隆该节点及其内部的后代节点;否则就只克隆该节点本身;

  • alipay_img
  • wechat_img
届ける言葉を今は育ててる
最后更新于 2023-03-10