03JavaScript操作DOM对象

JavaScript操作DOM对象

DOM:Document Object Model(文档对象模型)

DOM---->HTML-DOM

​ ---->CSS-DOM

​ ---->DOM-Core

在这里插入图片描述

访问节点

1. 使用getElement系列方法访问指定节点:

getElementById()、getElementsByName()、getElementsByTagName()

2. 根据层次关系访问节点:
节点属性:
属性名称描述
parentNode返回节点的父节点
childNodes返回子节点集合,childNodes[i]
firstChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastChild返回节点的最后一个子节点
nextSibling下一个节点
previousSibling上一个节点
element属性:
属性名称描述
firstElementChild返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点
lastElementChild返回节点的最后一个子节点
nextElementSibling下一个节点
previousElementSibling上一个节点

||两种写法,浏览器识别谁用谁

oNext = oParent.nextElementSibling || oParent.nextSibling   
oPre = oParent.previousElementSibling || oParent.previousSibling  
oFirst = oParent. firstElementChild  ||  oParent.firstChild   
oLast = oParent.lastElementChild || oParent.lastChild 

节点信息

  • nodeName:节点名称

  • nodeValue:节点值

  • nodeType:节点类型

节点类型NodeType
元素element1
属性attr2
文本text3
注释comments8
文档document9

操作节点

操作节点的属性
  • getAttribute(“属性名”)

  • setAttribute(“属性名”,“属性值”)

创建和插入节点
名称描述
createElement( tagName)创建一个标签名为tagName的新元素节点
A.appendChild( B)把B节点追加至A节点的末尾
insertBefore( A,B )把A节点插入到B节点之前
cloneNode(deep)复制某个指定的节点
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="conent">
			
		</div>
	</body>
</html>
<script>
	var a1 = document.createElement("a");   
	a1.innerText = "11233";   //给a标签添加文本
	//document.getElementById("conent").appendChild(a1);  //创建a标签在div里

	var con = document.getElementById("conent");
	con.parentNode.insertBefore(a1,con);   //添加a标签到div之前
</script>
删除和替换节点
名称描述
removeChild( node)删除指定的节点
replaceChild( newNode, oldNode)属性attr用其他的节点替换指定的节点

删除也可以用

xxx.innerHTML = "";

删除和替换那个节点的时候,记得先找父节点parentNode,在删除

var delNode=document.getElementById("first");
delNode.parentNode.removeChild(delNode);

var oldNode=document.getElementById("second");
var newNode=document.createElement("img");
newNode.setAttribute("src","images/f03.jpg");
oldNode.parentNode.replaceChild(newNode,oldNode);
操作节点样式style

​ 改变样式的属性:

  • style属性:HTML元素.style.样式属性="值"、

    document.getElementById("titles").style.color="#ff0000"; 
    document.getElementById("titles").style.fontSize="25px ";
    

  • className属性:HTML元素.className=“样式名称”

    function over(){
         document.getElementById("cart").className="cartOver";
         document.getElementById("cartList").className="cartListOver";
    }
    
获取元素的样式

HTML元素.style.样式属性;

……

兼容ie

alert(document.getElementById("cartList").currentStyle.display);

HTML中元素属性

属性描述
offsetLeft返回当前元素左边界到它上级元素的左边界的距离,只读属性
offsetTop返回当前元素上边界到它上级元素的上边界的距离,只读属性
offsetHeight返回元素的高度
offsetWidth返回元素的宽度
offsetParent返回元素的偏移容器,即对最近的动态定位的包含元素的引用
scrollTop返回匹配元素的滚动条的垂直位置
scrollLeft返回匹配元素的滚动条的水平位置
clientWidth返回元素的可见宽度
clientHeight返回元素的可见高度
//标准浏览器:
document.documentElement.scrollTop;
document.documentElement.scrollLeft;
//Chrome:
document.body.scrollTop;
document.body.scrollLeft;
//
var sTop=document.documentElement.scrollTop||document.body.scrollTop

innerText 获得或改变内容

innerHTML 获得和改变文本

setAttribute(属性,值) 设置HTML属性值

getAttribute(属性) 获得HTML的属性值

className 获得或改变class属性值

style.css 设置CSS样式

ent.body.scrollTop


innerText						 获得或改变内容

innerHTML						 获得和改变文本

setAttribute(属性,值)	 		 设置HTML属性值

getAttribute(属性)				 获得HTML的属性值

className						 获得或改变class属性值

style.css						 设置CSS样式

value							 获得value值

返回顶部的js效果:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			div{
				width: 80px;
				height: 20px;
				color:#fff;
				position: fixed;
				right: 0;
				bottom: 0;
				display:none;
				background: red;
			}
			span{
				position: fixed;
				top:0;
			}
		</style>
	</head>
	<body style="height: 2000px; background: green;">
		<span id="conent">0</span>
		<div id="top1" onclick="goTop()">返回顶部</div>
	</body>
</html>
<script>
var conent = document.getElementById("conent");
var top1 = document.getElementById("top1");
var infostop ;
	function goTop(){
		
		//document.documentElement.scrollTop = 0;	  //从底部直接返回顶部
		infostop = setInterval("upScroll()",200);  //计时函数让滚动变慢
	}
	
	
	function upScroll(){
		var sTop=document.documentElement.scrollTop||document.body.scrollTop;		
		sTop-=20;
		if(sTop<0){
			clearInterval(infostop);
		}
		document.documentElement.scrollTop = sTop;
	}

	window.onscroll = function(){    //匿名函数
		var sTop=document.documentElement.scrollTop||document.body.scrollTop;
		conent.innerText = sTop;
		
		if(sTop>300){
			top1.style.display="block";
		}else{
			top1.style.display="none";
		}
	}
</script>

表单验证(登录):

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--onsubmit="return false" 阻止登录跳转-->
		<form action="xxx" onsubmit="return regUser()" method="get">
			用户名:<input type="text" id="username" onfocus="infofause(this)" />
			<span id="name_error"></span><br/>
			密码: <input type="password" id="pwd" onfocus="infofause(this)" />
			<span id="pwd_error"></span><br/><br/>
			<input type="submit" value="注册"/>
					
		</form>
	</body>
</html>
<script>
function infofause(th){
	//this.nextElementSibling.nodeName;  //span
	this.nextElementSibling.innerText = "";
}
	function regUser(){
		var username = document.getElementById("username").value;
		if(username==""){   //从页面上的东西都是字符串
			document.getElementById("name_error").style.color="red";
			document.getElementById("name_error").style.fontSize="12px";
			document.getElementById("name_error").innerText = "请输入正确的用户名"
			return false;			
		}
		var pwd = document.getElementById("pwd").value;
		if(pwd==""){  
			document.getElementById("pwd_error").style.color="red";
			document.getElementById("pwd_error").style.fontSize="12px";
			document.getElementById("pwd_error").innerText = "请输入正确的密码"
			return false;
			
		}
		
		return true;
	}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱尔斯Jules

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值