DOM事件

一:事件

1.介绍
HTML 4.0的新特性之一是有能力使HTML事件触发浏览器中的动作(action),比如当用户点击某个HTML元素时启动一段javaScript。下面是一个属性列表,这些属性可插入HTML标签来定义事件动作。
2.什么是事件?
达到某个事先设定的条件自动触发的动作就叫做事件
3.抽象比喻
比如你踩着地雷会爆炸			    : 该现象就可以叫做事件
正如你所敲的键盘会有对应的反应		: 该现象就可以叫做事件
4.常用事件
onclick		: 当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

二:事件实践操作 绑定事件的两种方式(函数查找与标签查找)

1.事件案例(按钮触发事件)的两种方式
  • 第一种绑定事件方法 (函数查找)

<body>
    // 当用户点击该按钮会触发事件调用func1()
    <button onclick="func1()">点我</button>  // 按钮
    
<script>
    // 第一种绑定事件的方式
    function func1() {
        alert(111)
    }    
</scripts>    
</body>
  • 第二种绑定事件方法 (标签查找)
<body>
     // 该标签本身没有任何的事件 通过script内标签查找
    <button id="d1">点我</button>  // 按钮
    
<script>
    // 1.先通过标签查找找到(d1)标签
    let btnEle = document.getElementById('d1');
    // 2.然后给b1标签绑定事件,用户点击会触发函数体运行
    btnEle.onclick = function () {
        alert(222)
    }
</script>
</body>    

image

2.案例2(sctipt代码放到head内)
我们将sctipt代码放到head内进行测试,再次测试是否正常
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
    // 第一种绑定事件的方式
    function func1() {
        alert(111)
    }
    // 第二种
    // 1.先通过标签查找找到(d1)标签
    let btnEle = document.getElementById('d1');
    // 2.然后给b1标签绑定事件,用户点击会触发函数体运行
    btnEle.onclick = function () {
        alert(222)
    }
</script>
</head>
<body>

<button onclick="func1()">点我</button>  // 按钮

<button id="d1">点我</button>  // 按钮
</body>
</html>

image

3.报错原因(注意)
原因:
	代码执行是从上往下的,执行到该代码体时,未查找到标签,因为d1标签还未渲染到 所以绑定时报错。

注意:
	js代码script标签既可以放在html页面head内 也可以放在body内
一般情况下都是放在body内最下方(底部)
4.事件案例3(预加载onload实现标签查找在head内)
1.实现head内执行标签查找运行,使用预加载(onload)
2. 等待浏览器窗口加载完毕之后再执行代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
<!-- 等待页面加载完毕之后再执行代码-->
window.onload = function () {
            // 第一种绑定事件的方式
            function func1() {
                alert(111)
            }
            // 第二种
            let btnEle = document.getElementById('d1');
            btnEle.onclick = function () {
                alert(222)
            }
        }
</script>
</head>
<body>
<button onclick="func1()">点我</button>  # 按钮
<button id="d1">点我</button>  # 按钮

</body>
</html>

image

5.函数报错原因:
原因:
	该方法等待页面加载完毕在执行script代码,验证了可以执行标签查找,但是函数调用报错了,因为先执行页面代码,函数调用失败,找不到被调用函数即报错。
解决方法:
	使用第二种方法即可标签查找
6.总结(标签查找与函数查找):
标签查找		: 通常使用标签查找式,同一份代码可以给多个标签绑定式

函数查找		: func()函数方法太局限性了,要写很多代码

推荐使用标签查找方式
7.window.onload
当我们给页面上的元素绑定事件的时候,必须等到文档加载完毕。因为我们无法给一个不存在的元素绑定事件。

window.onload事件在文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有图像,脚本,链接和子框架都已完成加载。

注意:.onload()函数存在覆盖现象。
posted @ 2022-02-13 22:19  AlexEvans  阅读(68)  评论(0编辑  收藏  举报