操作节点(增删改)
插入节点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>

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号