JS中常见的事件函数或监听事件

JavaScript在实际项目中的事件函数茫茫多,本文主要是总结一下基本并且常用的事件函数:

1、鼠标事件:

            onclick: 点击事件
            ondblclick: 双击事件
            
            onmouseover: 鼠标进入“某对象区域”
            onmouseout: 鼠标离开“某对象区域”
            
            onmousedown: 鼠标按下
            onmouseup: 鼠标抬起
            onmousemove: 鼠标移动。

 2. 表单事件:
            onsubmit:表单提交事件
            
            onfocus:一个表单项获得焦点。(就是鼠标在输入框中点击,可以输入内容)
            onblur: 一个表单项失去焦点。(就是鼠标离开输入框,在别的元素发生鼠标事件)
            
            onchange: 一个表单项的内容的改变(通常用于select选项值的改变)
            onreset: 表单重置事件

 3. 键盘事件:
            onkeydown: 按键按下去(尚未抬起来)
            onkeyup:    按钮抬起来。
            onkeypress:     按键一次(不包含功能键,比如退格键、回车键)。

 4.窗口事件:
            onload:  网页一打开时发生——准确点说,是网页加载完毕时发生。
            onunload: 卸载

简单的实例示范:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#box1{
				width: 300px;
				height: 200px;
				text-align: center;
				background: orangered;
				font: 30px/25px "微软雅黑";
				color: white;
			}
		</style>
	</head>
	<body onload="alert('欢迎光临!')">
		<!--双击-->
		<input type="button" id="btn1" value="双击我" ondblclick="f1();" />
		<!--移入和移出-->
		<div id="box1" onmouseover="f2();" onmouseout="f3(this);">
			我是默认的文字
		</div>
		<!--获取焦点和失去焦点-->
		<form action="" method="post">
			<input type="text" id="userName" value="请输入用户名" onfocus="this.value='';" onblur="userCheck();" onkeyup="alert(event.keyCode);" />
			<!--当选项发生改变时-->
			籍贯:
			<select onchange="alert(this.value);">
				<option>请选择</option>
				<option>广东省</option>
				<option>江西省</option>
				<option>福建省</option>
			</select>
			<input type="submit" value="提交"/>
		</form>
		<input type="button" id="" value="关闭窗口" onclick="window.close();" />
		<script type="text/javascript">
			function f1() {
				var b1=document.getElementById("btn1");
				b1.style.fontSize="50px";
			}
			
			function f2() {
				var box1=document.getElementById("box1");
				box1.innerHTML="发发发!";
			}
			
			function f3(bianliang) {
				//var box1=document.getElementById("box1");
				//box1.innerHTML="我是默认的文字!";
				bianliang.innerHTML="我是默认的文字!";
				
				//this表示一个对象自己(元素节点对象)
			}
			
			//语句少可以直接写在事件上面,语句多最好定义成函数,在通过事件调用函数
			
			//this.value==''?this.value='请输入用户名':'';
			function userCheck() {
				var yhm=document.getElementById("userName");
				if(yhm.value=="")
				{
					yhm.value="请输入用户名";
				}
			}
		</script>
	</body>
</html>

简易的表单验证:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<div id="d1">
			<form action="dataForm.html" method="post" onsubmit="return checkForm();">
				<p>用户账号:<input type="text" id="yhm" /><span>用户名长度6~18位</span></p>
				<p>登录密码:<input type="password" id="pwd" /><span>密码长度6~12位</span></p>
				<p><input type="submit" value="登 录" /></p>
			</form>
		</div>
		<script type="text/javascript">
			//表单验证的思路
			//如果用户提交的数据合法就允许提交到后台,否则就阻止提交表单。
			//1 提交表单的事件?onsubmit
			//提交表单是就应该调用一个验证数据合法性的函数
			//onsubmit="checkForm();"
			//return checkForm(); 就是把验证数据的结果进行返回
			
			//2 写验证函数
			function checkForm() {
				var yhm=document.getElementById("yhm");
				var pwd=document.getElementById("pwd");
				
				if(yhm.value=="")
				{
					alert("请输入用户名!");
					yhm.focus(); //获取用户名的焦点
					return false; //阻止提交
				}
				else if(yhm.value.length<6 || yhm.value.length>18)
				{
					alert("用户名长度必须在6~18位之间!");
					yhm.focus(); //获取用户名的焦点
					return false; //阻止提交
				}
				else if(pwd.value=="")
				{
					alert("请输入密码!");
					pwd.focus(); //获取用户名的焦点
					return false; //阻止提交
				}
				else if(pwd.value.length<6 || pwd.value.length>12)
				{
					alert("密码长度必须在6~12位之间!");
					pwd.focus(); //获取用户名的焦点
					return false; //阻止提交
				}
				//如果还有很多表单项目,照此方法依次验证
			}
		</script>
	</body>
</html>

监听事件(addEventListener)

1、浏览器时间

        load: 页面全部资源加载完毕

        scroll: 浏览器滚动时候触发——window.scrollX/Y

                                                        ——document.documentElement.scrollLeft

        resize: 浏览器窗口大小发生改变时触发

2、鼠标事件:

        click: 点击事件(鼠标左键)

        dblclick: 双击事件

        contextmenu: 右键单击事件

        mousedown: 鼠标按下事件

        mouseup: 鼠标抬起事件

        mousemove:鼠标移动

                (该事件是源源不断的,如果对每个mousemove事件都加以处理的话,则页面会因为高频率的操作导致抖动问题。,此时可以加入“防抖”功能,比如说在100个mousemove事件,只选择性地处理其中一个,来说实现节流防抖。)

                关于防抖和节流的问题,大家可以去看看我的另一篇文章:防抖、节流

        mouseover:鼠标移入事件

        mouseout: 鼠标移出事件

        mouseenter: 鼠标移入事件(该事件不会冒泡)

        mouseleave:鼠标移出事件

3、键盘事件:

        keydown: 键盘按下事件

        keyup: 键盘抬起事件

        keypress: 键盘按下再抬起事件

      关于按下具体键:e.keyCode/e.which  得到的值都是字符集里的码点

        键盘事件的案例,可以参考本人的另一篇博客:打字游戏

4、表单事件

        focus:表单元素得到焦点

        bur: 表单元素失去焦点

        input: 每改变一个字符时触发

        change: 表单内容改变事件(敲回车或光标点击别处)

        submit: 表单提交事件(form.onsubmit)

5、触摸事件

        touchstart: 触摸开始事件

        touchend: 触摸结束事件

        touchmove: 触摸移动事件

         ...

以下是监听事件的绑定方式的简单实例:

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

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>02_事件的绑定方式</title>
</head>

<body>
    <div id="box">点我试试看</div>

    <script>
        var div = document.querySelector("#box")

        // 【注册】事件的方式只能绑定一个函数
        // div.onclick = function () {
        //     console.log('我被点击了')
        // }

        // div.onclick = function () {
        //     console.log('我做的第二件事情')
        // }

        // 注销事件监听器
        // div.onclick = null

        /* 绑定式事件监听器 */
        // add 添加 event 事件 listener 监听器
        // div.addEventListener(
        //     // 事件类型
        //     "click",
        //     // 事件监听器(函数)
        //     function(e){
        //         console.log("我被点击了1");
        //     }
        // )

        // div.addEventListener(
        //     "click",
        //     function(e){
        //         console.log("我被点击了2");
        //     }
        // )

        /* 事件监听器是函数=引用数据类型=传参就是地址传递=可以直接传递函数名(其实就是函数地址) */
        function clickHandler1(e) {
            console.log('我被点击了1')
        }

        var clickHandler2 = function (e) {
            console.log("我的第二个事情2");
        }

        div.addEventListener(
            "contextmenu",
            clickHandler1
        )
        div.addEventListener(
            "contextmenu",
            clickHandler2
        )

        /* 有add就有remove 移除事件监听器clickHandler */
        // 事件监听器需要常驻内存 24小时保持警惕 开销较大 所以不用时要及时移除 以节约系统内存
        div.removeEventListener("contextmenu",clickHandler2)

        // div.removeEventListener("click", handler2);

    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值