原帖地址
添加、删除、插入和替换[文本节点]
一、何谓节点?
页面元素是按树形结构布置的,树形结构的每个部分称为一个节点,节点中含有子节点,节点的终极是文本或图像,对文本而言称为“文本节点”,其他节点统称称“元素节点”。
二、通过表单添加节点实例:
节点位于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>