非IE下常用的事件绑定的方式

1. html事件(html级事件)

描述:绑定发生在html代码中的事件,称为html事件

语法:on+事件名  = '函数名1();函数名2();...';

注意:

          (1)所有html事件都采用冒泡传递

          (2)函数执行顺序按照顺序为准

          (3)绑定多个函数的时候,函数应当采用分号隔开,而不是以分号结尾

移除:on+事件名 = null;

弊端:

          (1)耦合性太强

          (2)如果绑定函数未能正确加载,则会触发事件的时候报错

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>非IE下的事件绑定</title>
		<style type="text/css">
			.div1{
				width: 200px;
				height: 200px;
				background-color: skyblue;
			}
			.div2{
				width: 100px;
				height: 100px;
				background-color: pink;
			}
		</style>
	</head>
	<body>
		<div class="div1">
			<div class="div2" onclick="func1();func2();func3()"></div>
		</div>
	</body>
	<script type="text/javascript">
		var div1 = document.querySelector('.div1');
		var div2 = document.querySelector('.div2');
		//html事件
		function func1(){
			console.log('这是第1个函数');
		};
		function func2(){
			console.log('这是第2个函数');
		};
		function func3(){
			console.log('这是第3个函数');
		};
		//移除html事件
		function func1(){
			console.log('这是第1个函数');
			div2.setAttribute('onclick','null');
		};
	</script>
</html>

代码运行效果如下:   


            
2. DOM0事件(dom0级事件)

描述:在脚本中通过on+事件名方式绑定的事件,称为dom0事件

语法:元素节点.on+事件名 = function(){

                    执行语句;

            };

注意:

          (1)dom0方式绑定的事件均为冒泡事件

          (2)dom0方式只能给一个元素节点,一个事件绑定一个执行函数

              如果给一个事件绑定多个执行函数,则取最后绑定的函数为准

移除:on+事件名 = null;

弊端:一次只能给一个事件绑定一个函数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>非IE下的事件绑定</title>
		<style type="text/css">
			.div3{
				width: 200px;
				height: 200px;
				background-color: green;
			}
			.div4{
				width: 100px;
				height: 100px;
				background-color: yellow;
			}
		</style>
	</head>
	<body>
		<div class="div3">
			<div class="div4"></div>
		</div>
	</body>
	<script type="text/javascript">
		var div3 = document.querySelector('.div3');
		var div4 = document.querySelector('.div4');
		//DOM0事件
		div4.onclick = function(){
			console.log('div4被点击了');
		};
		div4.onclick = function(){
			console.log('div4又被点击了');
		};
		//移除DOM0事件
		div4.onclick = function(){
			console.log('div4的点击事件被移除');
			div2.onclick = null;//移除点击事件,不是移除这个绑定函数
		};
	</script>
</html>

代码运行效果如下:


3. DOM2事件(dom2级事件)

描述:在脚本中通过addEventListener函数绑定事件,称为dom2事件

语法:元素节点.addEventListener('type',listenFunc,useCapture);

参数:

          (1)第一个参数表示绑定事件的类型,没有on!是个字符串!

          (2)第二个参数表示监听函数,就是事件发生的时候执行的函数

          (3)第三个参数表示是否采用捕获机制,默认不写和false都代表冒泡机制,true代表捕获

注意:

          (1)dom2事件允许绑定多个执行函数,并且执行顺序按照绑定顺序执行

          (2)Chrome1.0、Firefox1.0、Safari1.0、IE9.0、Opera7.0才开始支持addEventListener()和 

              removeEventListener()方法。对于不支持该函数的浏览器,可以使用attachEvent()方法和

              detachEvent()方法添加和移除事件

移除:通过removeEventListener函数移除绑定事件

           元素节点.removeEventListener('type',外部函数名,useCapture);

注意:

          (1)匿名函数无法移除,如果dom2事件想要移除,则必须通过外部函数名进行绑定事件

          (2)移除事件的函数名要与添加事件的函数名一致,否则无效

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>非IE下的事件绑定</title>
		<style type="text/css">
			.div1{
				width: 200px;
				height: 200px;
				background-color: lightcyan;
			}
			.div2{
				width: 100px;
				height: 100px;
				background-color: darkcyan;
			}
		</style>
	</head>
	<body>
		<div class="div1">
			<div class="div2"></div>
		</div>
	</body>
	<script type="text/javascript">
		var div1 = document.querySelector('.div1');
		var div2 = document.querySelector('.div2');
        //dom2事件
        div2.addEventListener('click', function () {
           console.log('div2的dom2事件函数1');
        });
        div2.addEventListener('click', function () {
           console.log('div2的dom2事件函数2');
        });
        div2.addEventListener('click', function () {
           console.log('div2的dom2事件函数3');
        });
        //采用捕获机制
        div2.addEventListener('click', function () {
           console.log('div2的dom2事件');
        },true);
        div1.addEventListener('click', function () {
           console.log('div1的dom2事件');
        },true);

		//移除dom2事件
		function func(){
			console.log('div2的dom2事件函数');
			div2.removeEventListener('click',func);
		};
		div2.addEventListener('click',func);
	</script>
</html>

代码运行效果如下:

猜你喜欢

转载自blog.csdn.net/weixin_55992854/article/details/117700737