本文小编为大家详细介绍“javascript DOM的概念和常用操作是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript DOM的概念和常用操作是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将 web 页面和脚本或程序语言连接起来。
官方定义晦涩难懂,我们可以简单理解为: DOM 采用的是“树形结构”,用“树节点”的形式来表示页面中的每一个元素。我们先看下面的一个例子。
<!DOCTYPE HTML> <html> <head> <title>文档标题</title> </head> <body> <a href="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3923a92ec9c74b7a9e6f7ec2f7b99c49~tplv-k3u1fbpfcp-zoom-1.image" rel="external nofollow" >我的链接</a> <h2>我的标题</h2> </body> </html>
对于上面这个 HTML 文档,DOM 将其解析为修图所示的树形结构。
HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。
添加元素
createElement - 创建元素
createTextNode - 创建文本节点(元素)
cloneNode(true/false) - 克隆一个节点,接收一个bool参数,用来表示是否复制子元素。
createDocumentFragment - 创建一个文档碎片 DocumentFragment,它表示一种轻量级的文档,主要是用来存储临时节点,大量操作 DOM 时用它可以大大提升性能。
例如:新创建一个新元素 div,并添加到 HTML 文档中。代码如下:
let el = document.createElement("div"); el.id = 'shiYu'; el.style = 'width: 500px;height:500px;backGroundColor:red;'; el.innerHTML = '创建一个新元素div'; document.body.appendChild(el);
例如:克隆一个新元素 clone,并添加到 HTML 文档中。代码如下:
let el = document.getElementById("test"); let clone = el.cloneNode(true); clone.id = "test2"; document.body.appendChild(clone);
删除元素
removeChild(node) - 删除子节点(元素)
replaceChild - 用于将一个节点替换另一个节点
代码如下:
var deletedChild = parent.removeChild(node); const sp1 = document.createElement("span"); sp1.id = "newSpan"; const sp1_content = document.createTextNode("new replacement span element."); sp1.appendChild(sp1_content); const sp2 = document.getElementById("childSpan"); const parentDiv = sp2.parentNode; parentDiv.replaceChild(sp1, sp2);
修改元素
appendChild(node) - 插入新的子节点(元素)
insertBefore - 在参考节点之前插入一个拥有指定父节点的子节点
insertAdjacentHTML - 将指定的文本解析为 Element 元素,并将结果节点插入到 DOM 树中的指定位置
代码如下:
// parent.appendChild(child); const p = document.createElement("p"); document.body.appendChild(p); let insertedNode = parentNode.insertBefore(newNode, referenceNode); // 原为 <div id="one">one</div> var d1 = document.getElementById('one'); d1.insertAdjacentHTML('afterend', '<div id="two">two</div>'); // 此时,新结构变成: // <div id="one">one</div><div id="two">two</div>
getElementById(id) - 获取带有指定 id 的节点(元素)
getElementsByClassName - 获取带有指定类名的节点(元素),多个类名用空格分隔,返回一个 HTMLCollection 。注意兼容
getElementsByTagName - 根据标签名称获取元素, * 表示查询所有标签,返回一个 HTMLCollection.
getElementsByName - 获取带有 name 属性的节点(元素),返回一个 NodeList.
querySelector - 返回单个 Node,IE8+(含),如果匹配到多个结果,只返回第一个。
querySelectorAll - 返回一个 NodeList ,IE8+(含)。
forms - 获取当前页面所有form,返回一个 HTMLCollection.
innerHTML - 节点(元素)的文本值
parentNode - 节点(元素)的父节点
childNodes - 节点(元素)的子节点
attributes - 节点(元素)的属性节点
setAttribute - 给元素设置属性
getAttribute - 返回指定的特性名相应的特性值,如果不存在,则返回null
hasAttribute - 判断元素是否有指定属性
dataset - 获取html data-开头的属性
classList - 获取样式 class
window.getComputedStyle - 获取应用到元素上的所有样式,IE8或更低版本不支持此方法。
getBoundingClientRect - 返回一个 DOMRect 对象,其提供了元素的大小及其相对于视口的位置。
例子:
// 创建一个html元素,这里以创建h2元素为例 let el = document.createElement("h2") el.innerHTML = '这是一段文字描述...' let p = document.getElementById('p') p.innerHTML = '这是一段文字描述...' // myEl 是一个 DOMRect 对象,包含整个元素的最小矩形(包括 padding 和 border-width)。width、height、left、top、right、bottom,它是相对于窗口顶部而不是文档顶部,滚动页面时它们的值是会发生变化的。 var myEl = element.getBoundingClientRect();
读到这里,这篇“javascript DOM的概念和常用操作是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。