HTML文档中一切都是节点

    整个文档是文档节点;

    注释是注释节点;

    每一个HTML元素都是一个元素节点;

    元素内的文本内容是文本节点;

    连元素的每一个属性都是一个属性节点。

    看到这些是不是感觉很熟悉,没错,就像JS中一切都是对象一样,HTML文档中一切都是节点。


    我们可以使用各种访问节点的方法,对任意一个节点进行增删改查等等操作。从而达到对整个页面的各种操作。

  

    如果要向HTML添加一个元素,需要先创建一个元素(元素节点),然后再将其追加到已有的元素上。

    创建元素节点newNode:

      var newNode = document.createElement(String tagName)

    创建元素内的文本节点:

      var textNode = document.createTextNode(String data)

    把文本节点textNode添加到新建的元素节点newNode上:

      newNode.appendChild(textNode)

    把新建的元素节点newNode添加到已存在的元素节oldNode点末尾:

      oldNode.appendChild(newNode)

    或者把新建的元素节点newNode添加到已存在的元素节点oldNode的某个子节点childNode前:

      oldNode.insertBefore(newNode,childNode)

    例子:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="content-type" content="text/html; charset=utf-8" />   
 5         <script src="jquery.js"></script>
 6         <script type="text/javascript">
 7             window.onload = function(){
 8                 var pp = document.createElement("li");
 9                 var hh1 = document.createElement("h1");
10                 var ttext = document.createTextNode("这是新添加的元素节点!");
11                 pp.appendChild(hh1);
12                 hh1.appendChild(ttext);
13                 var ull = document.getElementById("ul");
14                 ull.appendChild(pp);
15             }
16         </script>
17         <style type="text/css">
18             ul {
19                 border: 1px solid ;
20                 margin: 100px auto;
21                 width: 400px;
22                 list-style-type: none;
23             }
24         </style>        
25         <title>JS</title>
26     </head>    
27     <body>
28         <ul id="ul">
29             <li><h1>这是第一行!</h1></li>
30             <li><h1>这是第二行!</h1></li>
31         </ul>
32     </body>
33 </html>

  效果:

  

  

  删:

    查找到将要删除的节点removeNode和该节点的父节点parentNode后

      parentNode.removeChild(removeNode)

    例子:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="content-type" content="text/html; charset=utf-8" />   
 5         <script src="jquery.js"></script>
 6         <script type="text/javascript">
 7             window.onload = function(){
 8                 var pp = document.createElement("li");
 9                 var hh1 = document.createElement("h1");
10                 var ttext = document.createTextNode("这是新添加的元素节点!");
11                 pp.appendChild(hh1);
12                 hh1.appendChild(ttext);
13                 var ull = document.getElementById("ul");
14                 ull.appendChild(pp);
15                 
16                 var li1 = document.getElementById("li1");
17                 ull.removeChild(li1);
18             }
19         </script>
20         <style type="text/css">
21             ul {
22                 border: 1px solid ;
23                 margin: 100px auto;
24                 width: 400px;
25                 list-style-type: none;
26             }
27         </style>        
28         <title>JS</title>
29     </head>    
30     <body>
31         <ul id="ul">
32             <li id="li1"><h1>这是第一行!</h1></li>
33             <li><h1>这是第二行!</h1></li>
34         </ul>
35     </body>
36 </html>  

  效果:

    

 

  改:
    查找到某个需要改动的元素节点node,然后对其文本、样式等进行改动

    改动其样式:

      node.style.color="red"

    改动其文本:

      node.innerHTML="string"

    实例:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="content-type" content="text/html; charset=utf-8" />   
 5         <script src="jquery.js"></script>
 6         <script type="text/javascript">
 7             window.onload = function(){
 8                 var pp = document.createElement("li");
 9                 var hh1 = document.createElement("h1");
10                 var ttext = document.createTextNode("这是新添加的元素节点!");
11                 pp.appendChild(hh1);
12                 hh1.appendChild(ttext);
13                 var ull = document.getElementById("ul");
14                 ull.appendChild(pp);
15                 
16                 var li1 = document.getElementById("li1");
17                 ull.removeChild(li1);
18                 
19                 var li2 = document.getElementById("li2");
20                 li2.style.color="red";
21                 li2.innerHTML="改变了颜色和文本的第二行!"
22             }
23         </script>
24         <style type="text/css">
25             ul {
26                 border: 1px solid ;
27                 margin: 100px auto;
28                 width: 400px;
29                 list-style-type: none;
30             }
31         </style>        
32         <title>JS</title>
33     </head>    
34     <body>
35         <ul id="ul">
36             <li id="li1"><h1>这是第一行!</h1></li>
37             <li id="li2"><h1>这是第二行!</h1></li>
38         </ul>
39     </body>
40 </html>

  效果:

  

  查:

    我们除了应用getElementById()、getElementsByTagName()和getElementClassName()来获取特定的元素节点之余,我们还可以用getAttribute(String attribute) 来获取特定元素节点的某一个属性的值,并通过setAttribute(attrName,attrValue)来改变该属性的值。

    实例:

 1 <script type="text/javascript">
 2             window.onload = function(){
 3                 var pp = document.createElement("li");
 4                 var hh1 = document.createElement("h1");
 5                 var ttext = document.createTextNode("这是新添加的元素节点!");
 6                 pp.appendChild(hh1);
 7                 hh1.appendChild(ttext);
 8                 var ull = document.getElementById("ul");
 9                 ull.appendChild(pp);
10                 
11                 var li1 = document.getElementById("li1");
12                 ull.removeChild(li1);
13                 
14                 var li2 = document.getElementById("li2");
15                 li2.style.color="red";
16                 li2.innerHTML="改变了颜色和文本的第二行!"
17                 
18                 alert(li2.getAttribute("style"));19             }
20 </script>

  效果:

  

  除此之外,我们还可以通过某个节点的nodeName、nodeType和nodeValue获取节点的更多信息:

  nodeName属性规定节点的名称: 

    • nodeName 是只读的
    • 元素节点的 nodeName 与标签名相同
    • 属性节点的 nodeName 与属性名相同  
    • 文本节点的 nodeName 始终是 #text
    • 文档节点的 nodeName 始终是 #document

    注释:nodeName 始终包含 HTML 元素的大写字母标签名。

  nodeValue 属性规定节点的值:

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本本身
    • 属性节点的 nodeValue 是属性值

  nodeValue 属性规定节点的值:

    • 元素节点的 nodeValue 是 undefined 或 null
    • 文本节点的 nodeValue 是文本本身
    • 属性节点的 nodeValue 是属性值
posted on 2014-11-06 23:48  linxiong  阅读(294)  评论(0编辑  收藏  举报