<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS原生增、删、改、查操作</title>
</head>
<body>
<form id="theForm">
<p><textarea id="textArea" cols="30" rows="10"></textarea></p>
<p>
<label><input type="radio" name="nodeAction">Add Node</label>
<label><input type="radio" name="nodeAction">Del Node</label>
<label><input type="radio" name="nodeAction">Ins Node</label>
<label><input type="radio" name="nodeAction">Replace Node</label>
</p>
<select id="grafCount"></select>
<input type="submit" value="Submit">
</form>
<div id="modifiable"></div>
<script>
window.addEventListener("load" , init, false);
var nodeChgArea;
function init(){
nodeChgArea = document.getElementById("modifiable");
document.getElementById("theForm").addEventListener("submit", nodeChanger, false);
}
function addNode(){
var inText = document.getElementById("textArea").value;
/**创建文本节点**/
var newText = document.createTextNode(inText);
console.log(newText)
/**创建元素节点**/
var newGraf = document.createElement("p");
/**文本节点追加到元素节点中**/
newGraf.appendChild(newText);
nodeChgArea.appendChild(newGraf);
}
function delNode(){
/**获取下拉框的Index值**/
var grafChoice = document.getElementById("grafCount").selectedIndex;
var allGrafs = nodeChgArea.getElementsByTagName("p");
/**获取下拉框中序号为grafChoice的元素节点<p>111</p>**/
var oldGraf = allGrafs.item(grafChoice);
nodeChgArea.removeChild(oldGraf);
}
function insertNode(){
var grafChoice = document.getElementById("grafCount").selectedIndex;
var allGrafs = nodeChgArea.getElementsByTagName("p");
var oldGraf = allGrafs.item(grafChoice);
var inText = document.getElementById("textArea").value;
/**创建文本节点**/
var newText = document.createTextNode(inText);
/**创建元素节点**/
var newGraf = document.createElement("p");
newGraf.appendChild(newText);
nodeChgArea.insertBefore(newGraf, oldGraf);
}
function replaceNode(){
var grafChoice = document.getElementById("grafCount").selectedIndex;
var allGrafs = nodeChgArea.getElementsByTagName("p");
var oldGraf = allGrafs.item(grafChoice);
var inText = document.getElementById("textArea").value;
/**创建文本节点**/
var newText = document.createTextNode(inText);
/**创建元素节点**/
var newGraf = document.createElement("p");
newGraf.appendChild(newText);
nodeChgArea.replaceChild(newGraf, oldGraf);
}
function nodeChanger(evt){
var actionType;
var pGrafCt = nodeChgArea.getElementsByTagName("p").length;
var radioButtonSet = document.getElementById("theForm").nodeAction;
for (var index = 0; index < radioButtonSet.length; index++){
if (radioButtonSet[index].checked){
actionType = index;
}
}
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:
console.log("No item!");
}
/**初始化下拉框**/
for (var index1 = 0; index1 < nodeChgArea.getElementsByTagName("p").length; index1 ++) {
document.getElementById("grafCount").options[index1] = new Option(index1 + 1);
}
/**阻止默认事件发生。阻止了submit表单提交**/
evt.preventDefault();
}
</script>
</body>
</html>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。