JavaScript htmldom 导航 JavaScript htmldom 事件监听器 JavaScript htmldom 节点 使用HTML DOM, 可以使用节点关系来导航节点树. DOM 节点 根据W3C HTML DOM标准, 在一个HTML文档都是一个节点: The entire document is a document node 每个HTML元素是元素节点 在HTML元素的文本是文本节点 每一个HTML属性是一个属性节点 所有注释都是注释节点 使用HTML DOM, 在节点树的所有节点可以通过JavaScript访问. 可以创建新节点,并可以修改或删除所有节点. 节点关系 节点树中的节点彼此具有层次关系. 使用父母,孩子和兄弟姐妹的术语是用来描述他们的关系. 在节点树中,顶节点称为根 (或根节点) 每个节点都有一个父节点,除了根节点 (没有父节点) 节点可以有多个孩子 兄弟姐妹(兄弟或姐妹)有同一个父节点 <html> <head> <title>DOM Tutorial</title> </head> <body> <h1>DOM Lesson one</h1> <p>Hello world!</p> </body> </html> 从上面你可以阅读HTML: <html> 是根节点 <html> 没有父节点 <html> 是 <head> 和 <body>的父节点 <head> 是 <html>的第一个节点 <body> 是 <html>的最后一个节点 并且: <head> 有一个子节点: <title> <title> 有一个子节点 (文本节点): "DOM Tutorial" <body> 有两个子节点: <h1> 和 <p> <h1> 有一个子节点: "DOM Lesson one" <p> 有一个子节点: "Hello world!" <h1> 和 <p> 是兄弟节点 节点之间导航 你可以使用以下的节点属性导航节点之间使用JavaScript: parentNode childNodes[nodenumber] firstChild lastChild nextSibling previousSibling 子节点和节点值 在DOM处理中常见的错误就是认为一个元素节点包含文本. <title id="demo">DOM Tutorial</title> 元素节点<title> (在上面的实例中) 不包含文本。 它包含有值的文本节点 "DOM Tutorial". 该文本节点的值可以通过节点的innerHTML属性访问: var myTitle = document.getElementById("demo").innerHTML; 访问innerHTML属性访问和访问第一个子节点值相同: var myTitle = document.getElementById("demo").firstChild.nodeValue; 访问第一个子节点也可以这样做: var myTitle = document.getElementById("demo").childNodes[0].nodeValue; 所有下面3个实例查询<h1>元素的文本,并且拷贝它到<p>元素。 <html> <body> <h1 id="id01">My First Page</h1> <p id="id02"></p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML; </script> </body> </html> 让我试试 <html> <body> <h1 id="id01">My First Page</h1> <p id="id02"></p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue; </script> </body> </html> 让我试试 <html> <body> <h1 id="id01">My First Page</h1> <p id="id02">Hello!</p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue; </script> </body> </html> 让我试试 InnerHTML 在本教程中,我们使用innerHTML属性来检索HTML元素的内容. 然而,学习其他方法理解树结构和DOM的导航是有用的. DOM 根节点 有两个特殊属性允许访问完整文档: document.body - 文档主体 document.documentElement - 完整的文档 <html> <body> <p>Hello World!</p> <div> <p>The DOM is very useful!</p> <p>This example demonstrates the <b>document.body</b> property.</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html> 让我试试 <html> <body> <p>Hello World!</p> <div> <p>The DOM is very useful!</p> <p>This example demonstrates the <b>document.documentElement</b> property.</p> </div> <script> alert(document.documentElement.innerHTML); </script> </body> </html> 让我试试 nodeName 属性 nodeName属性指定一个节点的名称. nodeName 是只读的 nodeName 一个元素节点的节点名称和标签名称相同 一个属性节点的节点名称是属性名 一个文本节点的nodeName总是 #text 文档的节点名称总是 #document <h1 id="id01">My First Page</h1> <p id="id02"></p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName; </script> 让我试试 注意: nodeName总是包含HTML元素的大写标签名称. nodeValue 属性 nodeValue 属性指定节点的值. 素节点的节点值是 undefined 文本节点的节点是文本本身 属性节点的节点值是属性值 nodeType 属性 nodeType 属性返回节点类型. nodeType 是只读的. <h1 id="id01">My First Page</h1> <p id="id02"></p> <script> document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType; </script> 让我试试 最重要的节点类型有: 元素类型 节点类型 Element 1 Attribute 2 Text 3 Comment 8 Document 9 JavaScript htmldom 事件监听器 JavaScript htmldom 节点