本文共 2002 字,大约阅读时间需要 6 分钟。
DOM节点是网页中的基本单元,通常对应 HTML 标签、文本或属性。每个节点都有 nodeType 属性,表示节点类型:
创建 DOM 节点的主要方法是 document.createElement 和 document.createTextNode:
var node1 = document.createElement('div');var node2 = document.createTextNode('hello world!'); DOM 提供多种方法查询文档中的元素:
单个元素查询:
document.getElementById('xxx'):根据 id 查询元素document.querySelector(".myclass"):根据类名查询元素document.getElementsByClassName('highlight'):根据类名查询所有元素多个元素查询:
document.querySelectorAll("div.note, div.alert"):同时查询多个类名的元素document.getElementsByTagName('td'):根据标签名查询所有元素DOM 也提供了导航方法查询父子节点:
父节点:
ele.parentElement:返回父节点ele.parentNode:返回父节点(不考虑兼容性)ele.offsetParent:返回最近有定位的父节点子节点:
ele.children:返回所有子节点(包含文本节点)ele.firstChild、ele.lastChild:返回第一个或最后一个子节点ele.firstElementChild、ele.lastElementChild:返回第一个或最后一个子元素元素属性:
ele.attributes:获取所有属性ele.getAttribute('class'):获取指定属性ele.setAttribute('class', 'highlight'):设置属性ele.hasAttribute('class'):判断是否有属性ele.removeAttribute('class'):移除属性DOM 操作允许对文档进行实时修改:
添加子元素:
ele.appendChild(el);
删除子元素:
ele.removeChild(el);
替换子元素:
ele.replaceChild(el1, el2);
插入子元素:
parentElement.insertBefore(newElement, referenceElement);
克隆元素:
ele.cloneNode(true); // 包括所有属性和子节点
处理元素属性的方法:
获取属性:
var attrs = el.attributes; // 返回属性数组 [{name, value}]var c = el.getAttribute('class'); // 获取指定属性值 设置属性:
el.setAttribute('class', 'highlight'); // 设置属性值 判断属性:
el.hasAttribute('class'); // 是否存在属性el.removeAttribute('class'); // 移除属性 判断是否有属性:
el.hasAttributes(); // 是否有任何属性
innerHTML 和 outerHTML 都用于获取或设置元素的 HTML 内容,但有以下区别:
innerHTML:
<div></div> 内部 HTML 为 content<div></div>(假设 content 是 div 内的内容)outerHTML:
<div></div> 包含所有嵌套的内容jQuery 的 html() 方法与普通的 innerHTML 有区别:
innerHTML 来获取内容,但处理异常时会使用 .empty() 和 .append() 进行重建innerHTML 是只读属性,直接调用可能会失败通过以上方法,DOM 操作为开发者提供了强大的工具,能够实时修改网页内容,提升用户体验。
转载地址:http://bzsuz.baihongyu.com/