聊聊 DOM 和 document

304 阅读3分钟

DOM(Document Object Model)和document不一样。

什么是DOM?document?

  • document是浏览器提供的一个对象它是DOM的一部分,是访问和操作网页内容(DOM树)的入口。

    通过document对象可以获取页面中的元素、创建新元素、修改元素属性等诸多操作。例如,可以使用document.getElementById获取具有特定id的元素。

  • DOM(Document Object Model)即文档对象模型,是一种树形结构的编程接口,用于表示HTML或XML文档中的所有内容。

    它将文档中的标签、属性、文本等都转换为对象,除了document对象外,还包括各种元素节点、文本节点、属性节点等。

    例如,一个<div>标签在DOM中是一个元素节点,这个节点可以有子节点,像其中包含的文本就是文本节点,节点之间构成了层次关系,就像树一样。

如何使用 JavaScript 操作 dom

在JavaScript中,可以通过以下常见方式操作DOM:

选择元素

  • 通过ID选择:使用document.getElementById("id名称"),返回一个与指定id属性值匹配的元素节点。

    例如,若有<div id="myDiv"></div>,可以用document.getElementById("myDiv")来获取这个div元素。

  • 通过标签名选择document.getElementsByTagName("标签名")会返回一个包含所有指定标签名的元素节点列表。

    document.getElementsByTagName("p")能获取文档中所有的<p>元素。

  • 通过类名选择document.getElementsByClassName("类名")返回一个包含所有指定类名的元素节点列表。

    例如,document.getElementsByClassName("myClass")获取所有类名为myClass的元素。

  • querySelector:使用document.querySelector("CSS选择器"),它返回文档中匹配指定CSS选择器的第一个元素

    例如document.querySelector(".myClass")会返回第一个类名为myClass的元素; document.querySelector("#myId")返回id为myId的元素。

  • querySelectorAlldocument.querySelectorAll("CSS选择器")返回一个包含所有匹配指定CSS选择器的节点列表。

    document.querySelectorAll("p.myPara")会获取所有类为myPara<p>元素。

改变元素内容

  • 修改文本内容:对于获取到的元素节点,可以通过innerHTML属性来改变元素包含的HTML内容。

    比如document.getElementById("myDiv").innerHTML = "新的内容";。也可以使用textContent属性仅修改纯文本内容。

  • 修改属性:可以修改元素的各种属性,如src(对于<img>元素)、href(对于<a>元素)等。

    例如document.getElementById("myImage").src = "新的图片路径";

  • 直接修改style属性:可以直接修改元素的style属性来改变样式。

    例如document.getElementById("myElement").style.color = "red";,这会将idmyElement的元素文字颜色设为红色。

  • 使用classList属性:通过classList属性来操作元素的类名。

    document.getElementById("myElement").classList.add("newClass")给元素添加一个newClass类; document.getElementById("myElement").classList.remove("oldClass")移除oldClass类; document.getElementById("myElement").classList.toggle("active")在元素有active类时移除,没有则添加。

创建和添加元素

  • 创建元素:使用document.createElement("标签名")来创建一个新的元素节点。

    例如var newDiv = document.createElement("div");创建了一个新的div元素。

  • 添加元素:可以将新创建的元素添加到文档中。如果想把新元素添加为某个元素的子元素,可以使用appendChild方法。

    document.getElementById("parentDiv").appendChild(newDiv);,这就把newDiv添加到了idparentDiv的元素内部。

删除元素

  • 移除元素:使用removeChild方法从DOM中移除元素。

    例如,若有一个元素childDivparentDiv的子元素,可通过document.getElementById("parentDiv").removeChild(document.getElementById("childDiv"))将其移除。