18 document——操作HTML文档结构
首先要明确一点,操作HTML文档结构,是不会改变HTML源码的,改变的是HTML的document对象。
效果先看
innerHTML方式
增加节点
- 通过innerHTML获得标签下的代码,然后追加代码即可。
function addNode(){ var father = document.getElementById("father"); father.innerHTML += "<div><input type='file'><input type='button' value='删除' onclick='del(this)'><br></div>"; }
删除节点
- 首先调用此函数的删除标签通过this传入自身
- 通过传入的标签本身获得标签的父节点
- 父节点删除自身(包括所有子标签)
function del(obj){ //获取父节点(dic) var father = obj.parentElement; //父节点删除自己 father.remove(); }
代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> // 添加节点 function addNode(){ var father = document.getElementById("father"); father.innerHTML += "<div><input type='file'><input type='button' value='删除' onclick='del(this)'><br></div>"; } // 删除节点 function del(obj){ //获取父节点(dic) var father = obj.parentElement; //父节点删除自己 father.remove(); } </script> <h2>document结构操作:增加与删除节点</h2> <input type="button" name="" id="" value="继续添加" onclick="addNode()"/> <hr> <div id="father"> <div><input type="file"><input type="button" value="删除" onclick="del(this)"><br></div> </div> </body> </html>
推荐方式:document.createElement()
我们知道document是一个对象,js中可以直接给对象添加新的属性,所以,我们就使用 创建节点、将节点添加到指定节点下成为子节点 的方法即可。
下面我们同样以上面添加文件的例子来做。
创建节点
首先获取父节点,然后开始创建子节点。
所谓节点就是一个个的标签(元素)。
- document.createElement(标签名);
给节点添加属性,如添加type属性。
- 节点名.type="button";
添加到父节点
- 父节点变量.appenChild(节点变量);
完整代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> function test(){ //获取元素对象 var div = document.getElementById("div1"); //创建input元素对象 var inp = document.createElement("input"); inp.setAttribute("type","file"); //创建按钮元素对象 var btn = document.createElement("input"); btn.setAttribute("type","button"); btn.setAttribute("value","删除"); //把删除函数直接写一下,通过父节点删除 btn.onclick=function(){ div.removeChild(inp); div.removeChild(btn); div.removeChild(br); } //创建换行 var br = document.createElement("br"); //将创建的元素对象放到div中 div.appendChild(inp); div.appendChild(btn); div.appendChild(br); } </script> <input type="button" name="" id="" value="继续添加" onclick="test()"/> <div id="div1" style="border: 1px solid red;width: 300px;height: 200px;"> </div> </body> </html>