操作节点(增删改)

插入节点appendChild()

在指定节点的最后一个子节点列表之后添加一个新的子节点。

语法: appendChild(newnode) 

参数:newnode:指定追加的节点

示例:在div标签内创建一个新的P标签

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>test</title>
  </head>
  <body>
   <div id="test">
     <p id="x1">HTML</p>
     <p>JavaScript</p>
   </div>
    <script type="text/javascript">
   var otest=document.getElementById("test");
   var newnode=document.createElement("p");
   newnode.innerHTML="This is a new p";
   //appendChild方法添加节点
   otest.appendChild(newnode);
    </script>
  </body>
</html>

 

 

插入节点insertBefore()

在已有的子节点前插入一个新的子节点。

语法: insertBefore(newnode,node); 

参数:

newnode:要插入的新节点

node:指定此节点前插入节点

示例一:

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>test</title>
  </head>
  <body>
   <div id="div1">
     <p id="x1">JavaScript</p>
     <p>HTML</p>
   </div>
    <script type="text/javascript">
   var otest=document.getElementById("div1");
   var node=document.getElementById("x1");
   var newnode=document.createElement("p");
   newnode.innerHTML="This is a new p";
   otest.insertBefore(newnode,node);
    </script>
  </body>
</html>

 示例二:

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
  </head>
  <body>
    <ul id="test"><li>JavaScript</li><li>HTML</li></ul>
    
    <script type="text/javascript">
    var otest = document.getElementById("test");
    var newnode = document.createElement("li");
    newnode.innerHTML = "PHP" ;
    otest.insertBefore(newnode,otest.childNodes[1]);
    </script>
  </body>
</html>

 

删除节点removeChild()

从子节点列表中删除某个节点,如果删除成功,此方法可以返回被删除的节点,如果失败,则返回NULL。

语法: nodeObject.removeChild(node) 

参数:

node:必需,指定需要删除的节点。

示例:删除子节点

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
  </head>
  <body>
    <div id="div1">
      <h1>HTML</h1>
      <h2>javascript</h2>
    </div>
    
    <script type="text/javascript">
    var otest = document.getElementById("div1");
    var x=otest.removeChild(otest.childNodes[1]);
    document.write("删除节点的内容"+x.innerHTML);
    </script>
  </body>
</html>

注:把删除的子节点赋值给x,这个子节点不在DOM树中,但是还存在内存中,可以通过x操作。

如果要完全删除对象,给x赋null值,如:

var otest=document.getElementById("div1");
var x=otest.removeChild(otest.childNodes[1]);
x=null;

 

 示例2:

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
  </head>
  <body>
    <div id="content">
      <h1>html</h1>
      <h1>php</h1>
      <h1>javascript</h1>
      <h1>jquery</h1>
      <h1>java</h1>
    </div>
    
    <script type="text/javascript">
    function clearText() {
    var content=document.getElementById("content");
    for(var i=content.childNodes.length-1;i>=0;i--){
    var childNode = content.childNodes[i];
    content.removeChild(childNode);
    }
    document.write("内容被清空了");
    }
    </script>
    <button onclick="clearText()">清除节点内容</button>
  </body>
</html>

 

效果:

 

替换元素节点replaceChild()

实现子节点(对象)的替换,返回被替换对象的引用。

语法: node.replaceChild(newnode,oldnew) 

参数:

newnode:必需,用于替换oldnew的对象

oldnew:必需,被newnode替换的对象

示例:将文档中的java改成JavaScript

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
  </head>
  <body>
    <script type="text/javascript">
   function replaceMessage(){
    var newnode=document.createElement("p");
    var newnodeText=document.createTextNode("JavaScript");
    newnode.appendChild(newnodeText);
    var oldNode=document.getElementById("oldnode");
    oldNode.parentNode.replaceChild(newnode,oldNode);
   }
    </script>
   
   <h1 id="oldnode">Java</h1>
   <a href="javascript:replaceMessage()">"Java"替换"JavaScript"</a>
  </body>
</html>

 

注:

1、当oldnode被替换时,所以与之相关的属性内容都将被移除。

2、newnode必须先被建立。

示例:将b标签替换成i标签

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
  </head>
  <body>
    <div><b id="oldnode">JavaScript</b>是一个很常用的技术,为网页添加动态效果。</div>
    <a href="javascript:replaceMessage()"> 将加粗改为斜体</a>
    
    <script type="text/javascript">
    function replaceMessage(){
    var oldnode=document.getElementById("oldnode");
    var oldHTML= oldnode.innerHTML;
    var newnode=document.createElement("i");
    oldnode.parentNode.replaceChild(newnode,oldnode);
    newnode.innerHTML=oldHTML;
    
    }
    </script>
    
  </body>
</html>

 

创建元素节点createElement()

此方法可以返回一个Element对象

语法: document.createElement(tagName); 

参数:

tagName:字符值,这个字符串用来指明创建元素的类型

注意:要与appendChild()或inserBefore()方法联合使用,将元素显示在页面中。

示例:在HTML文档中创建一个按钮

<script type="text/javascript">
   var body = document.body; 
   var input = document.createElement("input");  
   input.type = "button";  
   input.value = "创建一个按钮";  
   body.appendChild(input);  
 </script>  

 

示例:在HTML文档中,创建一个文本框,使用setAttribute设置属性值。 当点击这个文本框时,会弹出对话框“This is a text!”。

<script type="text/javascript">  
   var body= document.body;             
   var btn = document.createElement("input");  
   btn.setAttribute("type", "text");  
   btn.setAttribute("name", "q");  
   btn.setAttribute("value", "使用setAttribute");  
   btn.setAttribute("onclick", "javascript:alert('This is a text!');");       
   body.appendChild(btn);  
</script>  

 

 

创建文本节点createTextNode()

创建新的文本节点,返回创建的Text节点。

语法: document.createTextNode(data) 

参数:

data:字符串值,可规定次节点的文本。

示例:创建一个<div>元素并向其中添加一条消息

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    <style type="text/css">
      .message{
        width: 200px;
        height: 100px;
        background-color: #ccc;
      }
    </style>
  </head>
  <body>
  <script type="text/javascript">  
  var element=document.createElement("div");
  element.className="message";
  var textNode=document.createTextNode("Hello world!");
  element.appendChild(textNode);
  document.body.appendChild(element);
</script>  
  </body>
</html>

 

posted @ 2017-05-01 11:32  Lucky锦  阅读(455)  评论(0)    收藏  举报