添加、删除、插入和替换[文本节点]

原帖地址


添加、删除、插入和替换[文本节点]

    

    一、何谓节点? 
     页面元素是按树形结构布置的,树形结构的每个部分称为一个节点,节点中含有子节点,节点的终极是文本或图像,对文本而言称为“文本节点”,其他节点统称称“元素节点”。 
     二、通过表单添加节点实例: 
     节点位于body中,没有事先创建一个可以避免干扰的全新div区域。 
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <title>Adding Nodes</title>
     <script language="javascript" type="text/javascript">
     window.onload = initAll;
     function initAll() {
     document.getElementsByTagName("form")[0].onsubmit = addNode;//对第一个表单的按钮定义onsubmit事件 
     }
     function addNode() {
     var inText = document.getElementById("textArea").value;//通过id获取表单中文本区域的值 
     var newText = document.createTextNode(inText);//创建一个文本节点,括号中inText是文本的内容 
     var newGraf = document.createElement("p");//创建一个元素节点p
     newGraf.appendChild(newText);//将上述文本节点置入p元素节点之中 
     var docBody = document.getElementsByTagName("body")[0];//定义body元素对象为第一个body元素 
     docBody.appendChild(newGraf);//将元素p置入body元素当中 
     return false;
     }
     </script>
     </head>
     <body>
     <form action="#">
     <p><textarea id="textArea" rows="5" cols="30"></textarea></p>
     <input type="submit" value="Add some text to the page" />
     </form>
     </body>
     </html>
     注意:使用上述方法添加节点不会导致页面无效,而使用innerHTML赋值方法可能导致页面无效。 
     三、添加和删除文本节点实例。 
     通过表单按钮事件(onsubmit)添加节点,再通过链接点击(onclick)删除节点实例,此例没有创建全新区域div。 
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <title>Deleting Nodes</title>
     <script language="javascript" type="text/javascript">
     window.onload = initAll;
     function initAll() {
     document.getElementsByTagName("form")[0].onsubmit = addNode;
     document.getElementById("deleteNode").onclick = delNode;
     }
     function addNode() {
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     var docBody = document.getElementsByTagName("body")[0];
     docBody.appendChild(newGraf);
     return false;
     }
     function delNode() {
     var allGrafs = document.getElementsByTagName("p");
     if (allGrafs.length > 1) {
     var lastGraf = allGrafs.item(allGrafs.length-1);//因为是从0开始的,所以最后一个p元素是allGrafs.length-1
     var docBody = document.getElementsByTagName("body")[0];
     docBody.removeChild(lastGraf);//删除最后一个p元素 
     }
     else {
     alert("Nothing to remove!");
     }
     return false;
     }
     </script>
     </head>
     <body>
     <form action="#">
     <p><textarea id="textArea" rows="5" cols="30"></textarea></p>
     <input type="submit" value="Add some text to the page" />
     </form>
     <a id="deleteNode" href="#">Delete last paragraph</a>
     </body>
     </html>
     四、创建全新区域来添加和删除特定文本节点实例。 
     事先在body中创建一个全新div区域,并设其id= modifiable以便javascript调用。 
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <title>Deleting Selected Nodes</title>
     <script language="javascript" type="text/javascript">
     window.onload = initAll;
     var nodeChgArea;
     function initAll() {
     document.getElementsByTagName("form")[0].onsubmit = nodeChanger;
     nodeChgArea = document.getElementById("modifiable");//获取div元素对象 
     }
     function addNode() {
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     nodeChgArea.appendChild(newGraf);
     }
     function delNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;//当前选择的项目 
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.removeChild(oldGraf);
     }
     function nodeChanger() {
     var actionType = -1;
     var pGrafCt = nodeChgArea.getElementsByTagName("p").length;
     var radioButtonSet = document.getElementsByTagName("form")[0].nodeAction;
     for (var i=0; i<radioButtonSet.length; i++) {
     if (radioButtonSet[i].checked) {
     actionType = i;
     }
     }
     switch(actionType) {
     case 0:
     addNode();
     break;
     case 1:
     if (pGrafCt > 0) {
     delNode();
     break;
     }
     default:
     alert("操作不正确");
     }
     document.getElementById("grafCount").options.length = 0;
     for (i=0; i<nodeChgArea.getElementsByTagName("p").length; i++) {
     document.getElementById("grafCount").options[i] = new Option(i+1);
     }
     return false;
     }
     </script>
     </head>
     <body>
     <form action="#">
     <p><textarea id="textArea" rows="5" cols="30"></textarea></p>
     <p><label><input name="nodeAction" type="radio"/>
     添加节点</label>
     <label><input type="radio" name="nodeAction" />删除节点</label></p>
     Paragraph #: <select id="grafCount"></select>
     <input type="submit" value="Submit" /></form>
     <div id="modifiable"></div>
     </body>
     </html>
     五、添加、删除及插入文本节点实例。 
     事先要创建一个全新区域div,并定义其id= “modifiable”。 
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <title>Inserting Nodes</title>
     <script language="javascript" type="text/javascript">
     window.onload = initAll;
     var nodeChgArea;
     function initAll() {
     document.getElementsByTagName("form")[0].onsubmit = nodeChanger;
     nodeChgArea = document.getElementById("modifiable");
     }
     function addNode() {
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     nodeChgArea.appendChild(newGraf);
     }
     function delNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.removeChild(oldGraf);
     }
     function insertNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.insertBefore(newGraf,oldGraf);
     }
     function nodeChanger() {
     var actionType = -1;
     var pGrafCt = nodeChgArea.getElementsByTagName("p").length;
     var radioButtonSet = document.getElementsByTagName("form")[0].nodeAction;
     for (var i=0; i<radioButtonSet.length; i++) {
     if (radioButtonSet[i].checked) {
     actionType = i;
     }
     }
     switch(actionType) {
     case 0:
     addNode();
     break;
     case 1:
     if (pGrafCt > 0) {
     delNode();
     break;
     }
     case 2:
     if (pGrafCt > 0) {
     insertNode();
     break;
     }
     default:
     alert("操作不正确");
     }
     document.getElementById("grafCount").options.length = 0;
     for (i=0; i<nodeChgArea.getElementsByTagName("p").length; i++) {
     document.getElementById("grafCount").options[i] = new Option(i+1);
     }
     return false;
     }
     </script>
     </head>
     <body>
     <form action="#">
     <p><textarea id="textArea" rows="5" cols="30"></textarea></p>
     <p><label><input type="radio" name="nodeAction" />添加节点</label>
     <label><input type="radio" name="nodeAction" />删除节点</label>
     <label><input type="radio" name="nodeAction" />插入节点在某个节点之前</label></p>
     Paragraph #: <select id="grafCount"></select>
     <input type="submit" value="Submit" />
     </form>
     <div id="modifiable"> </div>
     </body>
     </html>
     六、添加、删除、插入和替换文本节点。 
     事先要创建一个全新区域div,并定义其id= “modifiable”。 
     <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
     <title>Replacing Nodes</title>
     <script language="javascript" type="text/javascript">
     window.onload = initAll;
     var nodeChgArea;
     function initAll() {
     document.getElementsByTagName("form")[0].onsubmit = nodeChanger;
     nodeChgArea = document.getElementById("modifiable");
     }
     function addNode() {
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     nodeChgArea.appendChild(newGraf);
     }
     function delNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.removeChild(oldGraf);
     }
     function insertNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.insertBefore(newGraf,oldGraf);
     }
     function replaceNode() {
     var grafChoice = document.getElementById("grafCount").selectedIndex;
     var inText = document.getElementById("textArea").value;
     var newText = document.createTextNode(inText);
     var newGraf = document.createElement("p");
     newGraf.appendChild(newText);
     var allGrafs = nodeChgArea.getElementsByTagName("p");
     var oldGraf = allGrafs.item(grafChoice);
     nodeChgArea.replaceChild(newGraf,oldGraf);
     }
     function nodeChanger() {
     var actionType = -1;
     var pGrafCt = nodeChgArea.getElementsByTagName("p").length;
     var radioButtonSet = document.getElementsByTagName("form")[0].nodeAction;
     for (var i=0; i<radioButtonSet.length; i++) {
     if (radioButtonSet[i].checked) {
     actionType = i;
     }
     }
     switch(actionType) {
     case 0:
     addNode();
     break;
     case 1:
     if (pGrafCt > 0) {
     delNode();
     break;
     }
     case 2:
     if (pGrafCt > 0) {
     insertNode();
     break;
     }
     case 3:
     if (pGrafCt > 0) {
     replaceNode();
     break
     }
     default:
     alert("操作不正确");
     }
     document.getElementById("grafCount").options.length = 0;
     for (i=0; i<nodeChgArea.getElementsByTagName("p").length; i++) {
     document.getElementById("grafCount").options[i] = new Option(i+1);
     }
     return false;
     }
     </script>
     </head>
     <body>
     <form action="#">
     <p><textarea id="textArea" rows="5" cols="30"></textarea></p>
     <p><label><input type="radio" name="nodeAction" />添加文本</label>
     <label><input type="radio" name="nodeAction" />删除文本</label>
     <label><input type="radio" name="nodeAction" />在第··段前插入文本</label>
     <label><input type="radio" name="nodeAction" />替换文本</label></p>
     Paragraph #: <select id="grafCount"></select>
     <input type="submit" value="Submit" />
     </form>
     <div id="modifiable"> </div>
     </body>
     </html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值