JavaScriptDOM对象

DOM简介

DOM:Document Object Model文档对象模型
文档:网页的每一部分都会转换成了对象
模型:使用模型表示对象之间的关系,方便获取对象

节点Note:
	构成网页的基本成分,网页每一部分都可以称为节点
	文档节点:整个HTML文档
	元素节点:HTML中的HTML标签
	属性节点:元素的属性
	文本节点:HTML标签中的文本内容
					
浏览器以及为我们提供了文档节点对象,为window属性
可以在页面中直接使用,文档节点代表整个网页

//获取id为id1的对象
var id1 = document.getElementById("id1");
id1.innerHTML = "Button";

节点的属性
在这里插入图片描述

事件、加载

用户和浏览器之间的交互行为,如点击按钮,鼠标移动…
处理事件:
在事件对应属性中设置一些js代码,当事件被触发时,就会执行JS代码
被函数绑定的单机事件称为单机响应函数

var btn = document.getElementById("id1");
//绑定事件
//单机响应函数
btn.onclick = function(){
	console.log("已点击");
}

事件对象

当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数,
在事件对象中封装了当前事件相关的一切信息
window.onload = function(){
	var box1 = document.getElementById("box1");
	box1.onmousemove = function(event){
		//解决事件对象兼容性
		event = event || window.event;
			
		var x = event.clientX; //获取鼠标可见窗口的水平坐标
		var y = event.clientY; //获取鼠标可见窗口的垂直坐标
					
		var x2 = event.pageX; //获取鼠标整个窗口的水平坐标
		var y2 = event.pageY; //获取鼠标可见窗口的垂直坐标
	}
}

加载

浏览器加载顺序为自上向下,如果想要上面的JS代码可以用onload事件
onload:
	为window绑定一个onload事件,会在整个页面加载完成后触发
//获取id为id1的按钮
window.onload = function(){
	var btn = document.getElementById("id1");
};

DOM查询

获取元素节点
	getElementById()
		通过id属性获取一个元素节点对象
	getElementsByTagName()
		通过标签名获取一组元素对象,
	getElementsByName()
		通过name属性获取一组元素节点对象
			
获取具体的元素子节点
	方法:getElementsByTagName()
	属性:
		childNodes
			会获取包括文本节点在内的所有节点,包括标签间的空格和换行文本
		chidlren
			获取当前元素的所有子元素,不包括文本
		firstChild
			获取当前元素的第一个子节点
		fristElementChild
			获取当前元素的第一个子元素,不包括子元素
		lastChild
			表示当前节点的最后一个子节点
						
获取父节点和兄弟节点
	parentNode
		获取当前节点的父节点
	previousSibling
		获取当前节点的前一个兄弟节点
	prevoiusElementSibling
		获取前一个兄弟节点,不会获取到空白文本
	nextSibling
		表示当前节点的后一个兄弟节点
				
定义一个函数,专门来为指定元素绑定单击事件
	参数:1.要绑定单机响应函数的对象id属性
		 2.事件的回调函数,当元素单击时,函数会被触发
		 function myClick(idStr, fun){
			 var btn = document.getElementById(idStr);
			 btn.onclick = fun;
		 }
					 
innerHTML:
	获取标签元素中的标签和文本内容
innerText:
	获取元素内部的文本内容,会自动去除HTML标签内容

获取body标签
	var body = document.body;
			
获取HTML
	var html = document.documentElement;
				
获取页面中所有元素
	var all = document.all;
			 
根据class属性值获取元素节点
	var box1 = document.getElementsByClassName("box1");
				
document.querySelector()
	需要一个选择器的字符串作为参数,根据一个css选择器来查询一个元素节点对象
	只会返回唯一的一个,如果有多个就返回第一个
	var box1 = document.querySelector(".box1 div") //获取class属性为 .box1 里面的div标签
			
document.querySelectorAll()
	这个方法和querySelector()类似,可以将符合条件的元素封装成数组返回

切换图片的练习

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			window.onload = function(){
				
				var btn1 = document.getElementById("button1");
				var btn2 = document.getElementById("button2");
				var srcs = ["images/1.jpg", "images/2.jpg", "images/3.jpg"];
				var img = document.getElementsByTagName("img")[0];
				var index = 0;
				var info = document.getElementsByTagName("b")[0];
				info.innerHTML = "一共" + srcs.length + "张图片" + "当前为第" + (index + 1) + "张";
				btn1.onclick = function(){ 
					index --;
					if(index < 0){
						index = srcs.length - 1;
					}
					img.src = srcs[index];
					info.innerHTML = "一共" + srcs.length + "张图片" + "当前为第" + (index + 1) + "张";
				};
				
				btn2.onclick = function(){
					index ++;
					if(index > srcs.length - 1){
						index = 0;
					}
					img.src = srcs[index];
					info.innerHTML = "一共" + srcs.length + "张图片" + "当前为第" + (index + 1) + "张";
				}
				
			}
		</script>
		<style type="text/css">
			#box1{
				width: 240px;
				text-align: center;
				padding: 10px;
				margin: 20px auto;
				background-color: aqua;
			}
		</style>
	</head>
	<body>
		<div id="box1">
			<b></b>
			<img src="images/1.jpg" alt="图片1" id="id1" >
			<button type="button" id="button1">上一张</button>
			<button type="button" id="button2">下一张</button>
		</div>
	</body>
</html>

DOM增删改

document.createElement()
	可以用于创建一个元素节点对象
	需要一个标签名作为参数,并将创建好的对象作为返回值返回
			
document.createTextNode()
	创建一个文本节点对象
	需要一个文本节点作为参数,会返回这个节点
			
appendChild()
	向一个父节点中添加一个新的子节点
	用法:父节点.appendChild(子节点);
				
insertBefore()
	在指定节点前插入新的节点
	语法: 父节点.insertBefore(新节点, 旧节点); 
				
replaceChild()
	使用指定的子节点替换已有的子节点
	语法:父节点.replaceChild(新节点,旧节点);
				
removeChild()
	删除子节点
	语法:父节点.removeChild(子节点);
	子节点.parentNode.removeChild(子节点); 不需要知道父节是什么
			//创建li标签,创建li标签中的内容,把内容放入标签中
			var cre = document.createElement("li");
			var text = document.createTextNode("文本内容");
			cre.appendChild(text);
			
			//获取父节点,向父节点插入子节点
			var parent = document.getElementById("parent");
			parent.appendChild(cre);

使用DOM操作CSS样式

 通过JS修改元素样式:
	语法:元素.style.样式名 = 样式值;
				
如果JS中有background—color,需要去掉-然后后一个字母大写
如果CSS中设置了!important也修改不了样式
			window.onload = function(){
				var box1 = document.getElementById("box1");
				var btn1 = document.getElementById("button1");
				btn1.onclick = function(){
					box1.style.width = "300px";
					box1.style.height = "300px";
					box1.style.backgroundColor = "aquamarine";
				};
			};

读取元素的样式

 获取元素当前显示的样式:
	样式.currentStyle.属性
	只支持IE8
			 
	getComputedStyle(参数1, 参数2)
	参数1:要获取的样式
	参数2:传递一个伪元素,一般穿null
	方法会返回一个对象,对象中封装了当前元素对应的样式
	整个方法只能读,不能修改
function getStyle(obj, name){
	if(window.getComputedStyle){
		return getComputedStyle(obj, null)[name];
	} else {
		return obj.currentStyle[name];
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

轩尼诗道-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值