在学习JavaScript时,DOM和BOM都是重点内容 在学习加复习的情况下 理解了浅层内容 下面是展示
文档对象模型(Document Object Model,简称 DOM),是 W3C 组织推荐的处理可扩展标记语言(HTML
或者XML)的标准编程接口。 W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式。
文档:一个页面就是一个文档,DOM 中使用 document 表示
元素:页面中的所有标签都是元素,DOM 中使用 element 表示
节点:网页中的所有内容都是节点(标签、属性、文本、注释等),DOM 中使用 node 表示
document.getElementById('id');
document.getElementByTagName('标签名');
document.getElementByClassName('类名');
document.querySelector('.选择器'); //如果是类名必须加‘.’
document.querySelectorAll('选择器'); //同类的所有都会获取
doucumnet.body // 返回body元素对象
document.documentElement // 返回html元素对象
document.write(''); //页面文档流加载完毕会导致页面重绘
element.innerText // 拼接字符串的话会缓冲慢 数组块执行块
element.innerHTML //创建新元素 结构清晰
我们可以通过 JS 修改元素的大小、颜色、位置等样式。
element.style //行内样式属性
element.className //类名样式属性
注意:
src、href、title、alt等(就是可以给这些元素添加属性内容或者改变属性内容)
type、value、checked、selected、disabled(常见)
如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法:
1: element.属性 // 设置内置属性值。 传统方式 通过输出 但不能输出自定义属性
例如:console.log(div.id);
2: element.getAttribute('属性') //主要获得自定义的属性 (标准) 我们程序员自定义的属性
例如:console.log(div.getAttribute('nihao'));
1:element.属性 = '值';
例如: div.id = 'lgh';
2: element.setAttribute('属性', 内容)
例如: div.setAttribute('nihao', 123)
element.removeAttribute('属性');
例如:div.removeAttribute('nihao')
h5新增的获取自定义属性的方法 它只能获取data-开头的
dataset 是一个集合里面存放了所有以data开头的自定义属性
如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法
获取元素通常有两种方式 利用节点使操作更简单 但有兼容性
网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM 中,节点使用 node 来表示。
HTML DOM 树中的所有节点均可通过 JavaScript 进行访问,所有 HTML 元素(节点)均可被修改,也可以
创建或删除。
元素节点 nodeType 为 1
属性节点 nodeType 为 2
文本节点 nodeType 为
parentNode 获取父节点 亲爸爸
例如:console.log(box1.parentNode);
1:获取子节点 childNodes 所有节点 包含文本节点等
2: 一般用children 只有子节点 不包含文本节点等等
例如:console.log(ul.children);
1:获取第一个/最后一个子节点 firstChild / lastchild 返回第一个子节点(保含文本节点等等)
2: firstElementChild / lastElementChild 有兼容性
3: 元素.children[i] //用children写 最常用
//兄弟节点 (包含元素文本节点)
1:下一个兄弟节点 nextSibling 上一个兄弟节点 previousSibling
2: nextElementSibing previousElementSibling 兄弟元素节点 (不包含文本节点等等)
document.createElement('tagName')
例如: var li = document.createElement('li');
插入 node.appendChild (child) node:父级 child 子级 后面追加 //node.appendChild() 方法将一个节点添加到指定父节点的子节点列表末尾。类似于 CSS 里面的
after 伪元素。
例如: ul.appendChild(li)
插入 node.insertBefore(child,指定元素) //node.insertBefore() 方法将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before
伪元素。
例如: ul.insertBefore(lili, ul.children[0])
node.removeChild(child) //方法从 DOM 中删除一个子节点,返回删除的节点
node.cloneNode() 括号为空为浅拷贝 默认属性false
//方法返回调用该方法的节点的一个副本。 也称为克隆节点/拷贝节点
1. 如果括号参数为空或者为 false ,则是浅拷贝,即只克隆复制节点本身,不克隆里面的子节点。
2. 如果括号参数为 true ,则是深度拷贝,会复制节点本身以及里面所有的子节点。