python Web:JavaScript __6、DOM节点操作(增删改查)、获取或设置属性节点的值、操作元素样式

DOM节点操作

  • 创建元素节点和文本节点
    元素节点 :var div = document.createElement('div');
    文本节点 : var text = document.createTextNode('');

    注意 : 属性节点可以通过元素节点的点语法直接访问和设置

  • 添加节点
    DOM中对节点的插入 删除 追加操作,都由父元素执行

    • 在父元素中动态追加子节点
      父节点.appendChild(子节点);
      var div = document.createElement('div');
      //将div追加到body中
      document.body.appendChild(div);
      div.parentNode.append(div);
      
      注意 :文本节点也是元素的子节点
      var text = document.createTextNode('hello');
      //追加到div中显示
      div.appendChild(text);
      
      
    • 在文档的指定位置插入节点
      parentNode.insertBefore(newElem,oldElem);
      将newElem节点插入到oldElem节点之前
      et:
      var h1 = document.createElement('h1');
      //将h1插入在div之前
      document.body.insertBefore(h1,div);
      
      
  • 删除节点

    • 如果是删除body的子元素
      document.body.removeChild(elem);

    • 如果元素层级结构较多,就需要通过父节点parentNode执行删除操作
      parentNode.removeChild(elem);

      <!doctype html>
      <html lang="en">
       <head>
        <meta charset="UTF-8">
        <meta name="Generator" content="EditPlus®">
        <meta name="Author" content="">
        <meta name="Keywords" content="">
        <meta name="Description" content="">
        <title>Document</title>
       </head>
       <body>
      	<button onclick="removeElem()">删除div</button>
        <script>
      	var div = document.createElement('div');
      	div.id = "container";
      	div.innerText = "动态创建的div";
      	console.log(div);
       
      	//添加到文档中
      	document.body.appendChild(div);
      	var h1 = document.createElement('h1');
      	//创建文本节点
      	var text = document.createTextNode('星期五');
      	//为节点添加文本内容
      	h1.appendChild(text);
       
      	//添加到文档中
      	div.parentNode.appendChild(h1);
      	
      	//div之前插入h1
      	div.parentNode.insertBefore(h1,div);
       
      	//删除节点
      	function removeElem(){
      		document.body.removeChild(div);
      		//div.parentNode.removeChild(div);
      	}
       
       
       
        </script>
       </body>
      </html>
      

      上方包含三个输入框,一个添加按钮
      下方为商品信息展示区域,点击添加之后
      将商品信息显示在当前区域,同时显示操作按钮
      JS动态创建节点并显示(商品信息展示)

      <!doctype html>
      <html lang="en">
       <head>
        <meta charset="UTF-8">
        <meta name="Generator" content="EditPlus®">
        <meta name="Author" content="">
        <meta name="Keywords" content="">
        <meta name="Description" content="">
        <title>Document</title>
        <style>
      	table{
      		width: 600px;
      		border: 1px solid black;
      		border-collapse: collapse;
      	}
      	th,td{
      		border: 1px solid black;
      		text-align:center;
      	}
        </style>
       </head>
       <body>
      	<p>
      		<input type="text" name="gname" placeholder="商品名称">
      		<input type="text" name="gprice" placeholder="商品价格">
      		<input type="text" name="gcount" placeholder="商品数量">
      		<button onclick="addGoods()">添加</button>
      	</p>
      	<table>
      		<thead>
      			<tr>
      				<th>商品名称</th>
      				<th>商品价格</th>
      				<th>商品数量</th>
      				<th>操作</th>
      			</tr>
      		</thead>
      		<tbody>
      			
      		</tbody>
      	</table>
       </body>
       <script>
      	function addGoods(){
      		//1. 获取元素节点
      		var gname = document.getElementsByTagName('input')[0].value;
      		var gprice = document.getElementsByTagName('input')[1].value;
      		var gcount = document.getElementsByTagName('input')[2].value;
      		
      		var tbody = document.getElementsByTagName('tbody')[0];
      		
      		//2. 创建行
      		var tr = document.createElement('tr');
       
      		//3. 创建四个单元格并且赋值
      		var tdName = document.createElement('td');
      		tdName.innerHTML = gname;
      		var tdPrice = document.createElement('td');
      		tdPrice.innerHTML = gprice;
      		var tdCount = document.createElement('td');
      		tdCount.innerHTML = gcount;
      		var tdOper = document.createElement('td');
      		//操作按钮
      		var btnUpdate = document.createElement('button');
      		var btnDelete = document.createElement('button');
      		btnUpdate.innerHTML = "修改";
      		btnDelete.innerHTML = "删除";
      		//单元格中添加按钮
      		tdOper.appendChild(btnUpdate);
      		tdOper.appendChild(btnDelete);
       
      		//4. 向网页中添加元素
      		tr.appendChild(tdName);
      		tr.appendChild(tdPrice);
      		tr.appendChild(tdCount);
      		tr.appendChild(tdOper);
       
      		tbody.appendChild(tr);
       
       
      	}
       </script>
      </html>
      
  • 修改节点
    修改元素内容:

    <body>
    	<p id="pid">Hello</p>
    	<button onclick="demo()">按钮</button>
    	<script>
    		function demo(){
    			var nv = document.getElementById("pid");
    			nv.innerHTML="World";
    		}
    	</script>
    </body>
    

    修改元素标签属性:

    <body>
    	<a href="http://www.baidu.com/" id="aid" >呵呵</a>
    	<button onclick="demo()">按钮</button>
    	<script>
    		function demo(){
    			document.getElementById("aid").href="http://www.jikexueyuan.com";
    		}
    	</script>
    </body>
    

    替换标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .div1,.div2,.div3,.div4{
                width: 300px;
                height: 100px;
            }
            .div1{
                background-color: green;
            }
             .div2{
                background-color: yellow;
            }
             .div3{
                background-color: rebeccapurple;
            }
             .div4{
                background-color: deeppink;
            }
        </style>
    </head>
    <body>
    
    <div class="div1">
        <button onclick="add()">add</button>
        hello div1
    </div>
    <div class="div2">
        <button onclick="del()">del</button>
        hello div2
    </div>
    <div class="div3">
        <button onclick="change()">change</button>
        <p>hello div3</p>
    </div>
    <div class="div4">hello div4</div>
    
    
    <script>
        function change() {
            var img=document.createElement("img");//<img src="">
            //img.setAttribute("src","meinv.jpg");
            img.src="meinv.jpg";
    
            var ele=document.getElementsByTagName("p")[0];
            var father=document.getElementsByClassName("div3")[0];
    		
    		//修改节点
            father.replaceChild(img,ele)
    
    
        }
        function add() {
            var ele=document.createElement("p");//<p></p>
            ele.innerHTML="<h1>hello p</h1>";
            //ele.innerText="<h1>hello p</h1>";
            ele.style.color="red";
            ele.style.fontSize="10px";
            var father=document.getElementsByClassName("div1")[0];
            father.appendChild(ele)
    
        }
    
        function del() {
            var father=document.getElementsByClassName("div1")[0];
            var son=father.getElementsByTagName("p")[0];
            father.removeChild(son)
    
        }
    
    
    </script>
    </body>
    </html>
    
  • 改变 HTML 内容
    改变元素内容的最简答的方法是使用 innerHTMLinnerText

  • 改变 CSS 样式

<p id="p2">Hello world!</p>
document.getElementById("p2").style.color="blue";
<br> .style.fontSize=48px
获取或设置属性节点的值

操作标签属性

  • getAttribute(attrName)
    作用 : 获取指定属性的值
    attrName : 属性名
  • setAttribute(attrName,value)
    作用 :设置属性和对应的值
    attrName : 属性名
    value :属性值
  • removeAttribute(attrName)
    作用 :移除指定属性
    attrName : 属性名
    可以使用点语法访问元素节点的属性
    元素节点.属性名
    h1.id
    input.value
    

创建超链接,链接地址为百度
创建按钮,点击时修改超链接的链接地址
改为 http://www.tmooc.cn

<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">



</head>
<body>
    <H1>js操作属性标签</H1>
    <button onclick="getAttr()">获取属性</button>
    <button onclick="setAttr()">设置属性</button>
    <button onclick="removeAttr()"> 删除属性</button>

    <a href="http://www.baidu.com"> 百度</a>
    <button onclick="changeLink()">TMMOC</button>

</body>

<script>
    //获取元素节点
    var h1=document.getElementsByTagName('h1')[0]

    //实现函数
    function  getAttr() {
        console.log(h1.className);
    }

    function setAttr() {
        h1.className='redText';
    }

    function removeAttr() {
        h1.className=null;
    }

    function  changeLink() {
        //获取元素节点,并修改链接地址
        var  aLink=document.getElementsByTagName('a')[0];
        aLink.href='http://www.tmooc.cn';
        aLink.target='_blank';
        aLink.innerText="TMOOC";
    }
</script>
</html>

操作元素样式

  • setAttribute()
    可以设置元素 class / id 的属性值,对应选择器
  • 针对类选择器的样式,可以为元素属性className赋值
    元素.className = "";
  • 使用内联方式添加样式
    <h1 style="color:red;"></h1>
    元素.style.css属性名
    元素.style.css属性名 = "";

注意 :
如果CSS属性名中有连接符 - ,在JS中访问时一律
改成驼峰标识:
font-size 在JS中 使用 fontSize
background-color backgroundColor

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
	#redBack{
		background:red;
	}
	.greenText{
		color : green;
		text-align : center;
	}
  </style>
 </head>
 <body>
	<h1>动态修改元素样式</h1>
	<div>div</div>
 </body>
 <script>
	//1.获取元素节点
	var h1 = document.getElementsByTagName('h1')[0];
	var div = document.getElementsByTagName('div')[0];
 
	//2. 设置元素样式
	h1.setAttribute('id','redBack');
	h1.className = "greenText";
 
	//添加行内样式
	div.style.background = "pink";
	div.style.width = "200px";
	div.style.height = "200px";
	
 </script>
</html>
  1. 创建div 按钮 输入框
  2. 验证输入用户名是否在6 - 18 位之间,
    在6-18位之间的视为通过,在div中显示绿色的
    文本"用户名合法"
    如果不合法,div中显示红色文本“用户名不合法”
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
 </head>
 <body>
	用户名 :<input type="text" name="uname">
	<button onclick="validateName()">验证</button>
	<div></div>
 </body>
 <script>
	//1. 获取元素节点
	var input = document.getElementsByTagName('input')[0];
	var div = document.getElementsByTagName('div')[0];
	//2. 验证操作
	function validateName(){
		if(input.value.length >= 6 && input.value.length <= 18){
			//合法
			div.innerText = "用户名合法";
			div.style.color = "green";
		}else{
			div.innerText = "用户名不合法";
			div.style.color = "red";
		}
	}
 </script>
</html>
  • 关于class的操作
    elementNode.className返回元素的类名
    elementNode.classList 属性返回元素的类名列表
    elementNode.classList.add
    elementNode.classList.remove
    //模态对话框
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .content{
                height: 1800px;
                background-color: white;
            }
    
            .shade{
                position: fixed;
                top:0;
                left: 0;
                right: 0;
                bottom: 0;
                background-color: gray;
                opacity: 0.7;
            }
    
            .model{
                width: 200px;
                height: 200px;
                background-color: bisque;
                position: absolute;
                top:50%;
                left: 50%;
                margin-top: -100px;
                margin-left: -100px;
    
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    
    <div class="content">
        <button onclick="show()">show</button>
        hellohellohellohellohellohellohellohellohellohellohellohello
    </div>
    
    <div class="shade hide"></div>
    
    <div class="model hide">
        <button onclick="cancel()">cancel</button>
    </div>
    
    
    <script>
        function show() {
            var ele_shade=document.getElementsByClassName("shade")[0];
            var ele_model=document.getElementsByClassName("model")[0];
    
            console.log(ele_model.classList);
            console.log(ele_shade.classList);
            
            //删除  <div class="shade hide"></div>中 class中的hide,
            ele_model.classList.remove("hide");
            
            //删除--><div class="model hide">
            //          <button οnclick="cancel()">cancel</button>
            //      </div>
            //中的class中的hide
            ele_shade.classList.remove("hide");
    
        }
    </script>
    </body>
    </html>
    
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值