← 返回首页
Javascript基础教程(三十一)
发表时间:2020-04-01 01:23:12
讲解Javascript的DOM

1.什么是DOM

DOM:Document Object Model. 每个载入浏览器的 HTML 页面都会成为 document 对象,Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问,document对象是window对象下的,在使用时,可以省略window。

DOM文档对象模型是基于HTML树的api,这里可以把html经过浏览器解析后形成DOM树,使用DOM可以操作html树的节点,即对html标签进行增删改差操作。

上图就是一个简单的DOM树形结构

通过浏览器解析的html是document对象(文档节点,根节点).Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问

HTML 元素是Element 对象(元素节点),Element 对象可以拥有类型为元素节点、文本节点、注释节点的子节点

HTML 元素的属性是属性节点,文本是文本节点,注释是注释节点

小结:

2.DOM常见的元素类型

元素 说明
Document document是单个html页面的对象
Element 元素节点的分支包括了属性节点,文本节点(HTML 元素内的文本) ,注释节点(注释),和子元素节点
attr 属性对象 Attr 对象表示 HTML 属性节点,是在元素节点的下一级的节点
event对象 event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态

3.获取各种类型的节点

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<h1>DOM测试</h1>
<ul type="square">
    <li>Java</li>
    <li>HTML</li>
    <li>Css</li>
    <li>Javascript</li>
</ul>
<script>
    let rootNode = window.document;
    //获得文档节点
    console.log(rootNode.nodeType + "," + rootNode.nodeName + "," + rootNode.nodeValue);
    //获得元素节点
    let elementNode = document.getElementsByTagName("ul")[0];
    console.log(elementNode.nodeType + "," + elementNode.nodeName + "," + elementNode.nodeValue);
    //获取属性节点
    let attrNode = elementNode.getAttributeNode("type");
    console.log(attrNode.nodeType + "," + attrNode.nodeName + "," + attrNode.nodeValue);
    //获取文本节点
    let textNode = document.getElementsByTagName("h1")[0].firstChild;
    console.log(textNode.nodeType + "," + textNode.nodeName + "," + textNode.nodeValue);
    //获取子元素集合
    let childNodes = document.getElementsByTagName("ul")[0].childNodes;
    childNodes.forEach(function(n){
        //注意:li前面的回车也当做ul的子节点。 
        console.log(n.innerText);
    })

</script>
</body>
</html>

运行结果: