通过 HTML DOM,能够使用节点关系来导航节点树。
根据 W3C HTML DOM 标准,HTML 文档中的所有事物都是节点:
有了 HTML DOM,节点树中的所有节点都能通过 JavaScript 访问。
能够创建新节点,还可以修改和删除所有节点。
节点树中的节点彼此之间有一定的等级关系。
【举个栗子】
<html>
<head>
<title>DOM 教程title>
head>
<body>
<h1>DOM 第一课h1>
<p>Hello world!p>
body>
html>
从以上的 HTML 中您能读到以下信息:
同时:
有一个子:“Hello world!”
是同胞
通过 JavaScript,开发者可以使用以下节点属性在节点之间导航:
DOM 处理中的一种常见错误是认为元素节点中包含文本。
【举个栗子】
DOM 教程
(上面例子中的)元素节点
它包含了值为 “DOM 教程” 的文本节点。【OMG】
文本节点的值能够通过节点的 innerHTML
属性进行访问:
var myTitle = document.getElementById("demo").innerHTML;
访问 innerHTML 属性等同于访问首个子节点的 nodeValue
:
var myTitle = document.getElementById("demo").firstChild.nodeValue;
也可以这样访问第一个子节点:
var myTitle = document.getElementById("demo").childNodes[0].nodeValue;
以下三个例子取回 元素的文本并复制到
元素中:
①
<html>
<body>
<h1 id="id01">我的第一张页面h1>
<p id="id02">Hello!p>
<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
script>
body>
html>
②
<html>
<body>
<h1 id="id01">我的第一张页面h1>
<p id="id02">Hello!p>
<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
script>
body>
html>
③
<html>
<body>
<h1 id="id01">我的第一张页面h1>
<p id="id02">Hello!p>
<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
script>
body>
html>
使用 innerHTML
取回 HTML 元素的内容。
有两个特殊属性允许访问完整文档:
【举个栗子】
<html>
<body>
<p>Hello World!p>
<div>
<p>DOM 很有用!p>
<p>本例演示 <b>document.bodyb> 属性。p>
div>
<script>
alert(document.body.innerHTML);
script>
body>
html>
<html>
<body>
<p>Hello World!p>
<div>
<p>DOM 很有用!p>
<p>本例演示 <b>document.documentElementb> 属性。p>
div>
<script>
alert(document.documentElement.innerHTML);
script>
body>
html>
nodeName
属性规定节点的名称。
<h1 id="id01">我的第一张网页h1>
<p id="id02">Hello!p>
<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
script>
**注释:**nodeName 总是包含 HTML 元素的大写标签名。
nodeValue
属性规定节点的值。
nodeType
属性返回节点的类型。nodeType
是只读的。
<h1 id="id01">我的第一张网页h1>
<p id="id02">Hello!p>
<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
script>
最重要的 nodeType 属性是:
Type 2 在 HTML DOM 中已弃用。XML DOM 中未弃用。