DOM编程(三)

前言

本片笔记主要讲解DOM常用事件的绑定和学习,并会在后面配有练习案例


一、DOM事件绑定

DOM事件分为也分级别,常听见的就是0级、1级、2级和3级了。这里我们只讲0级和2级。(其实是老师只讲了0级和2级,然后我看网上关于DOM级别的描述都很官方的专业术语那种,实在看着头疼,所以还是不放出来误导大家了)
好了,下面让我们开始了解一下关于DOM不同级别的事件绑定

DOM0级别事件绑定

DOM0级的事件绑定被所有浏览器所兼容。主要分为HTML和JS绑定两种方式:

//HTML的事件绑定
<input type="button" id="t1" value="测试" onclick="display()" />
//JS的事件绑定
<input type="button" id="t1" value="测试" />
	<script type="text/javascript">
		document.getElementById('t1').onclick = display; //这里display后面不能加括号,如果在后面加上了括号的话事件就会立即执行
		function display(){
			console.log(123);
		}
	</script>

老师语录:
JS绑定事件时,不能加"()",否则会在页面加载时立即执行可以绑定匿名函数

DOM2级别事件绑定

DOM2:添加了两个监听方法来添加和移除事件处理程序
1、addEventListener():添加事件
2、removeEventListener():移出事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" id="t1" value="测试" />
		<script type="text/javascript">
			document.getElementById('t1').addEventListener('click',display)//为按钮添加一个点击事件
			function display(){
				console.log(123);
			}
			document.getElementById('t1').removeEventListener('click',display)//为按钮解除前面绑定的点击事件
		</script>
	</body>
</html>

DOM0级事件和DOM2级事件区别

区别一:
DOM0级事件只能绑定一个函数,前面绑定的函数会被覆盖

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" id="t1" value="测试" />
		<script type="text/javascript">
			document.getElementById('t1').onclick = function(){console.log(1);}
			document.getElementById('t1').onclick = function(){console.log(2);}
			document.getElementById('t1').onclick = function(){console.log(3);}
		</script>
	</body>
</html>

效果如下:
在这里插入图片描述

DOM2级事件可以绑定多个函数,且有执行顺序

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" id="t1" value="测试" />
		<script type="text/javascript">
			document.getElementById('t1').addEventListener('click',function(){console.log(1);})
			document.getElementById('t1').addEventListener('click',function(){console.log(2);})
			document.getElementById('t1').addEventListener('click',function(){console.log(3);})
		</script>
	</body>
</html>

效果如下:
在这里插入图片描述
区别二:
DOM0级事件与DOM2级事件互不影响

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" id="t1" value="测试" />
		<script type="text/javascript">
			function show(){console.log('啦啦啦啦');}
			document.getElementById('t1').addEventListener('click',show)
			document.getElementById('t1').onclick = show
		</script>
	</body>
</html>

效果如下:
在这里插入图片描述

事件传参

事件传参顾名思义即是在对绑定的事件的函数中进行传参
而事件传参一般有两种方法:
1、直接行内绑定

<input type="button" id="t1" value="测试" onclick="show('hello')" />

2、使用匿名函数

function show(x){console.log(x);}
document.getElementById('t1').onclick = function(){show('hello')}

不过如果你直接在JS代码里面进行事件绑定且不使用匿名函数的话是不会成功的,因为加上了括号之后绑定事件就会立即执行,如下面这种:

document.getElementById('t1').onclick = show('hello world');

除了主动传入的参数之外,每个事件还有默认的参数,如event参数
event为默认参数,不需传入即可调用,该对象表示触发的事件本身
event.target会返回触发该事件的目标元素
一般来说,event.target我们使用的较多,且用处很大

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="button" id="t1" value="测试" onclick="show('hello')" />
		<script type="text/javascript">
			function show(){console.log(event.target.value);console.log(event.target.type);}//使用event.target打印出input的类型和value值
			document.getElementById('t1').onclick = show
		</script>
	</body>
</html>

效果如下:
在这里插入图片描述
除此之外,event.code也可以识别你在键盘上按下的按键是什么

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input type="text" id="t1" onkeyup="show()" />
		<p id="result"></p>
		<script type="text/javascript">
			function show(){
				var Input = document.getElementById('t1').value;
				document.getElementById('result').innerHTML = Input;
				console.log(event.target.value);
				if(event.code == 'Enter'){ //判断当用户按下Enter键时跳出弹窗,弹窗显示用户当前输入的文本内容
					alert(Input);
				}
			}
		</script>
	</body>
</html>

在这里插入图片描述

DOM常用事件

事件说明
onload当页面完成加载
onclick当用户点击了HTML元素
onchange当HTML元素被改变
onkeyup当用于按下键盘按键松开后
onblur当元素失去焦点
onfocus当元素获得焦点
onmouseover当用户把鼠标移动到HTML元素之上
onmouseout当用户把鼠标移开HTML元素
onmousemove当用户移动鼠标
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值