一篇文章带你了解JavaScript Htmldom 导航

开发 前端
在一个HTML文档都是一个节点,The entire document is a document node 每个HTML元素是元素节点 在HTML元素的文本是文本节点 每一个HTML属性是一个属性节点 所有注释都是注释节点。

[[435200]]

使用HTML DOM,可以使用节点关系来导航"节点树"。

一、DOM 节点

在一个HTML文档都是一个节点,The entire document is a document node 每个HTML元素是元素节点 在HTML元素的文本是文本节点 每一个HTML属性是一个属性节点 所有注释都是注释节点。

使用HTML DOM, 在节点树的所有节点可以通过JavaScript访问。可以创建新节点,并可以修改或删除所有节点。

1. 节点关系

节点树中的节点彼此具有层次关系。

2. 子节点和节点值

在DOM处理中常见的错误就是认为一个元素节点包含文本。

  1. <title id="demo">DOM Tutorial</title> 

元素节点<title> (在上面的实例中) 不包含文本。

它包含有值的文本节点 "DOM Tutorial"。

该文本节点的值可以通过节点的innerHTML属性访问。

  1. var myTitle = document.getElementById("demo").firstChild.nodeValue; 

访问innerHTML属性访问和访问第一个子节点值相同:

  1. var myTitle = document.getElementById("demo").firstChild.nodeValue; 

访问第一个子节点也可以这样做:

  1. var myTitle = document.getElementById("demo").childNodes[0].nodeValue; 

实例1:

查询<h1>元素的文本,并且拷贝它到<p>元素。

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>项目</title> 
  6. </head> 
  7. <body style="background-color: aqua;"
  8.  
  9. <h1 id="id01">My First Page</h1> 
  10. <p id="id02"></p> 
  11.  
  12. <script> 
  13. document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; 
  14. </script> 
  15.  
  16. </body> 
  17. </html> 

实例2:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>项目</title> 
  6. </head> 
  7. <body style="background-color: aqua;"
  8.  
  9.    <h1 id="id01">My First Page</h1> 
  10.     <p id="id02"></p> 
  11.  
  12.  <script> 
  13.   document.getElementById("id02").innerHTML =         document.getElementById("id01").firstChild.nodeValue; 
  14. </script> 
  15.  
  16. </body> 
  17. </html> 

实例3 :

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>项目</title> 
  6. </head> 
  7. <body style="background-color: aqua;"
  8.    <h1 id="id01">My First Page</h1> 
  9.     <p id="id02">Hello!</p> 
  10.  
  11.    <script> 
  12.     document.getElementById("id02").innerHTML =       document.getElementById("id01").childNodes[0].nodeValue; 
  13. </script> 
  14.  
  15. </body> 
  16. </html> 

二、DOM 根节点

有两个特殊属性允许访问完整文档:

document.body - 文档主体

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4. <meta charset="UTF-8"
  5. <title>项目</title> 
  6. </head> 
  7. <body style="background-color: aqua;"
  8.  
  9. <h1 id="id01">我的第一个页面</h1> 
  10. <p id="id02"></p> 
  11.  
  12. <script> 
  13. document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; 
  14. </script> 
  15.  
  16.  
  17. </body> 
  18. </html> 

document.documentElement - 完整的文档

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3.   <head> 
  4.     <meta charset="UTF-8"
  5.     <title>项目</title> 
  6.   </head> 
  7.   <body style="background-color: aqua;"
  8.   <p>Hello World!</p> 
  9.   <div> 
  10.   <p>The DOM is very useful!</p> 
  11.    <p>This example demonstrates the <b>document.documentElement</b> property.</p> 
  12.   </div> 
  13.  
  14.   <script> 
  15.     alert(document.documentElement.innerHTML); 
  16. </script> 
  17.  
  18. </body> 
  19. </html> 

1. nodeName 属性

nodeName属性指定一个节点的名称,nodeName 是只读的。

nodeName 是只读的。

nodeName 一个元素节点的节点名称和标签名称相同。

一个属性节点的节点名称是属性名。

一个文本节点的nodeName总是 #text。

文档的节点名称总是 #document。

  1. <h1 id="id01">My First Page</h1> 
  2. <p id="id02"></p> 
  3.  
  4. <script> 
  5. document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; 
  6. </script> 

注意:

nodeName总是包含HTML元素的大写标签名称。

2. nodeValue 属性

nodeValue 属性指定节点的值。素节点的节点值是 undefined,文本节点的节点是文本本身,属性节点的节点值是属性值。

3. nodeType 属性

nodeType 属性返回节点类型. nodeType 是只读的。

  1. <script> 
  2. document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; 
  3. </script> 

三、总结

本文基于JavaScript,介绍了页面上htmldom 导航的节点。节点和节点之间的关系,采用生动的比喻进行讲解。以及根节点的属性进行了详细讲解。通过丰富的案例,运行效果图的展示。希望能帮助读者更好的学习。

 

使用JavaScript 语言,方便大家更好理解,希望对大家的学习有帮助。

 

责任编辑:武晓燕 来源: 前端进阶学习交流
相关推荐

2021-11-26 11:10:07

JavaScript 节点导航

2023-06-01 17:10:12

HTMLJavaScript

2020-10-20 15:37:48

了解JavaScrip

2021-05-07 14:17:01

JavaScript元素网页

2021-01-29 18:41:16

JavaScript函数语法

2021-06-04 09:56:01

JavaScript 前端switch

2020-11-10 10:48:10

JavaScript属性对象

2021-02-02 18:39:05

JavaScript

2023-09-06 14:57:46

JavaScript编程语言

2021-05-18 08:30:42

JavaScript 前端JavaScript时

2023-07-30 15:18:54

JavaScript属性

2021-01-26 23:46:32

JavaScript数据结构前端

2021-03-05 18:04:15

JavaScript循环代码

2024-01-30 13:47:45

2021-03-09 14:04:01

JavaScriptCookie数据

2021-06-24 09:05:08

JavaScript日期前端

2023-06-06 15:45:40

JavaScript数组

2021-04-20 11:20:24

Java开发运算符

2023-07-25 16:06:57

JavaScript对象

2023-08-27 15:18:17

JavaScriptRegExp
点赞
收藏

51CTO技术栈公众号