zoukankan      html  css  js  c++  java
  • 【Javascript】 DOM节点

      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                  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                  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                  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 是属性值
  • 相关阅读:
    驱动调试常见问题_Camera
    如何从零开始开发一款嵌入式产品(20年的嵌入式经验)
    git入门与实践
    ramfs, rootfs, initrd and initramfs
    Living a Fulfilling Life: A Guide to Following Your Heart
    有关 jffs2_scan_eraseblock 问题小结
    JS_imgload
    JS_闭包和内存.
    JS_textarea自适应高度
    Css_制作旋转字体
  • 原文地址:https://www.cnblogs.com/linxiong945/p/4080240.html
Copyright © 2011-2022 走看看