zoukankan      html  css  js  c++  java
  • 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; 300px;height: 200px;">
    		</div>
    	</body>
    </html>
    

      

  • 相关阅读:
    快来使用Portainer让测试环境搭建飞起来吧
    ReviewBoard安装记录(CentOS5)
    awk中的NR,FNR ,NF,$NF,RS,ORS,FS,OFS
    Argument list too long解决办法
    Jenkins插件开发(6.3)—— 追踪jenkinscli.jar
    AWK中如何按列求和
    JIRA中显示中文显示为乱码“口口口”的解决方式(CentOS)
    Jenkins常用插件记录
    Jenkins插件开发(6.4)—— 分析CLI源码
    Jenkins插件开发(6.2)—— 如何自定义CLI命令
  • 原文地址:https://www.cnblogs.com/Scorpicat/p/12218576.html
Copyright © 2011-2022 走看看