• JavaScript中DOM文档事件


    说明:DOM事件是JavaScript学习过程中非常重要的一个环节。

    目录

    一、事件 

    1.事件

    2.事件三要素

    3.事件流的三个阶段 

    二、相关API 

    1.窗口事件 

    ①当窗口获得焦点时候onfocus

    ②窗口加载完成后onload

    ③获得焦点时候改变背景颜色

    ④oninput 当文本框内容改变时 ,立即将改变内容 输出在控制台

    2.表单事件

    3.键盘事件 

    ①键盘按下事件onkeydown

    ②键盘松开事件onkeyup

    ③按下并松开事件onkeypress

    ④方向键操作盒子案例

    4.鼠标事件

    前言:今天我们首先会简单介绍一下事件流的相关知识点,之后我们会从窗口事件,表单事件,键盘事件,鼠标事件四个方面详细讲解相关API的使用。

    一、事件 

    1.事件

    事件:触发-响应机制。
    事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。

    2.事件三要素

    •         事件源:触发(被)事件的元素
    •         事件名称: click 点击事件
    •         事件处理程序:事件触发后要执行的代码(函数形式)

    3.事件流的三个阶段 

    1.    捕获:从 window 对象传到 目标元素。
    2.    目标阶 段:事件通过捕获,到达目标元素,这个阶段就是目标阶段。
    3.    冒泡:从目标元素传到 Window 对象

     

    二、相关API 

    1.窗口事件 

            获得焦点事件:

    ①当窗口获得焦点时候onfocus

    1. window.onfocus = function(){
    2. document.write("窗口获得了焦点");
    3. }
    4. 当窗口失去焦点时候onblur
    5. window.onblur = function(){
    6. console.log("窗口失去了焦点")
    7. }

    ②窗口加载完成后onload

    1. window.onload = function(){
    2. console.log("窗口加载完成")
    3. }
    4. 窗口大小改变onresize
    5. window.onresize = function(){
    6. alert("窗口大小改变")
    7. }

    ③获得焦点时候改变背景颜色

    1. var userCode = document.getElementById("userCode");
    2. userCode.onfocus = function(){
    3. this.style.backgroundColor = "red";//this指定当前窗口
    4. }
    5. console.log("这个")
    6. onchange 内容改变事件
    7. userCode.onchange = function () {
    8. console.log(userCode.value);
    9. }

    ④oninput 当文本框内容改变时 ,立即将改变内容 输出在控制台

    1. userCode.oninput = function () {
    2. console.log(userCode.value);
    3. }
    4. oninvalid获取表单 未能提交时
    5. userCode.oninvalid = function () {
    6. console.log("请您完成表单的内容!");
    7. }
    8. onselect当文本框内容被选中时
    9. userCode.onselect = function () {
    10. // this
    11. console.log("您已经选择了文本框!");
    12. }

    2.表单事件

    表单验证案例:

    1. <head>
    2. <meta charset="utf-8">
    3. <title>title>
    4. head>
    5. <body>
    6. <form action="#" method="get" id="mForm">
    7. <table border="1" align="center">
    8. <tr>
    9. <td>账号:td>
    10. <td><input type="text" id="zhanghao"/>
    11. td>
    12. tr>
    13. <tr>
    14. <td>密码:td>
    15. <td><input type="password" id="mimaOne"/>
    16. td>
    17. tr>
    18. <tr>
    19. <td>确认密码:td>
    20. <td>
    21. <input type="password" id="mimaTwo"/>
    22. td>
    23. tr>
    24. <tr>
    25. <td>手机号码:td>
    26. <td><input type="text" id="phone"/>
    27. td>
    28. tr>
    29. <tr>
    30. <td>性别:td>
    31. <td>
    32. <label><input type="radio" name="sex" checked/>label>
    33. <input type="radio" name="sex" id="sex1"/><label for="sex1">label>
    34. td>
    35. tr>
    36. <tr>
    37. <td>年级:td>
    38. <td>
    39. <select id="nianji">
    40. <option value="0">---请选择---option>
    41. <option value="1">一年级option>
    42. <option value="2">二年级option>
    43. <option value="3">三年级option>
    44. <option value="4">四年级option>
    45. select>
    46. td>
    47. tr>
    48. <tr>
    49. <td>邮箱:td>
    50. <td><input type="text" id="email"/>
    51. td>
    52. tr>
    53. <tr>
    54. <td>身份证号码:td>
    55. <td><input type="text" id="shenfenzheng"/>
    56. td>
    57. tr>
    58. <tr>
    59. <td colspan="2" align="center">
    60. <input type="submit"/>
    61. <input type="reset"/>
    62. td>
    63. tr>
    64. table>
    65. form>
    66. <script>
    67. //获取表单
    68. var mForm = document.getElementById("mForm");//表单
    69. //根据id获取值
    70. let zhanghao = document.getElementById("zhanghao");//账号
    71. let mimaOne = document.getElementById("mimaOne");//密码
    72. let mimaTwo = document.getElementById("mimaTwo");//确认密码
    73. let phone = document.getElementById("phone");//电话
    74. let sex = document.getElementById("sex1");//性别
    75. let nianji = document.getElementById("nianji");//年级
    76. let email = document.getElementById("email");//邮箱
    77. //正则表达式
    78. var code = /^[A-Za-z0-9]{6,16}$///账号
    79. var pass = /^(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*()_+?<>])[^]{6,}$/;
    80. var ph = /^1[3456789]\d{9}$/;
    81. var em = /^[a-zA-Z0-9_-]{4,16}@[a-zA-Z0-9_-]{2,}\.+[comn]{2,3}$/;
    82. var uId = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    83. mForm.onsubmit = function(){
    84. //删除多余span
    85. var spanSum = document.getElementsByTagName("span");
    86. if (spanSum != '') {
    87. for (let i = 0; i < spanSum.length; i++) {
    88. spanSum[i].remove();
    89. }
    90. }
    91. var err = document.createElement("span");
    92. if(zhanghao.value==''){
    93. err.innerHTML='账号不能为空';
    94. err.style.color='red';
    95. zhanghao.parentElement.appendChild(err);
    96. }else if(!code.test(zhanghao.value)){
    97. err.innerHTML='账号格式不正确';
    98. err.style.color='red';
    99. zhanghao.parentElement.appendChild(err);
    100. }else if(mimaOne.value==''){
    101. err.innerHTML='密码不能为空';
    102. err.style.color='red';
    103. mimaOne.parentElement.appendChild(err);
    104. }else if(!pass.test(mimaOne.value)){
    105. err.innerHTML='密码格式不正确';
    106. err.style.color='red';
    107. mimaOne.parentElement.appendChild(err);
    108. }else if(mimaTwo.value==''){
    109. err.innerHTML='密码不能为空';
    110. err.style.color='red';
    111. mimaTwo.parentElement.appendChild(err);
    112. }else if(!pass.test(mimaTwo.value)){
    113. err.innerHTML='密码格式不正确';
    114. err.style.color='red';
    115. mimaTwo.parentElement.appendChild(err);
    116. }else if(mimaOne.value!=mimaTwo.value){
    117. err.innerHTML='密码不一致';
    118. err.style.color='red';
    119. mimaTwo.parentElement.appendChild(err);
    120. }else if(phone.value==''){
    121. err.innerHTML='电话号码不能为空';
    122. err.style.color='red';
    123. phone.parentElement.appendChild(err);
    124. }else if(!ph.test(phone.value)){
    125. err.innerHTML='手机号码格式错误';
    126. err.style.color='red';
    127. phone.parentElement.appendChild(err);
    128. }else if(nianji.value==''){
    129. err.innerHTML='请选择年级';
    130. err.style.color='red';
    131. nianji.parentElement.appendChild(err);
    132. }else if(email.value==''){
    133. err.innerHTML='邮箱不能为空';
    134. err.style.color='red';
    135. email.parentElement.appendChild(err);
    136. }else if(em.test(email)){
    137. err.innerHTML='邮箱格式不正确';
    138. err.style.color='red';
    139. email.parentElement.appendChild(err);
    140. }else if(shenfenzheng.value==''){
    141. err.innerHTML='身份证不能为空';
    142. err.style.color='red';
    143. shenfenzheng.parentElement.appendChild(err);
    144. }else if(uId.test(shenfenzheng.value)){
    145. err.innerHTML='身份证格式不正确';
    146. err.style.color='red';
    147. shenfenzheng.parentElement.appendChild(err);
    148. }else{
    149. return true;
    150. }
    151. return false;
    152. }
    153. script>
    154. body>
    155. html>

    3.键盘事件 

    ①键盘按下事件onkeydown

    1. window.onkeydown = function(event){
    2. //解决兼容问题
    3. event = event || window.event;
    4. console.log("键盘按下了" + event.keyCode);
    5. if(event.keyCode==13){
    6. console.log("按下了回车");
    7. }
    8. }

    ②键盘松开事件onkeyup

    1. window.onkeyup = function(event){
    2. //解决兼容问题
    3. event = event || window.event;
    4. console.log("键盘松开了"+event.keyCode);
    5. if(event.keyCode==13){
    6. console.log("松开了回车");
    7. }
    8. }

    ③按下并松开事件onkeypress

    1. window.onkeypress = function (event) {
    2. event = event || window.event;
    3. console.log("键盘按下了" + event.keyCode);
    4. if (event.keyCode == 13) {
    5. console.log('按下了回车');
    6. }
    7. }

    ④方向键操作盒子案例

    1. CSS部分:
    2. HTML部分:
    3. var box = document.getElementById("box");
    4. document.onkeydown = function (event) {
    5. event = event ||window.event;
    6. switch (event.keyCode) {
    7. case 37:
    8. box.style.left = box.offsetLeft - 10+'px';
    9. break;
    10. case 39:
    11. box.style.left = box.offsetLeft + 10+'px';
    12. break;
    13. case 38:
    14. box.style.top = box.offsetTop - 10+'px';
    15. break;
    16. case 40:
    17. box.style.top = box.offsetTop + 10+'px';
    18. break;
    19. }
    20. }

    4.鼠标事件

    • onmouseenter:当鼠标进入了当前的DIV
    • onmouseleave:当鼠标移出了当前的DIV
    • onscroll:当滚动元素的滚动条运行时
    • onmousewheel:当鼠标的滚轮运行时

    案例代码:

    1. <head>
    2. <meta charset="UTF-8">
    3. <title>Titletitle>
    4. head>
    5. <body>
    6. <div onmouseenter="divMouseenter()"
    7. onmouseleave="divMouseleave()"
    8. style="width: 300px;height: 300px;background: red">
    9. <div onmouseenter="divMouseenter()"
    10. onmouseleave="divMouseleave()"
    11. style="width: 100px;height: 100px;background: pink">
    12. div>
    13. div>
    14. <div id="box" style="overflow: scroll;width: 200px;height: 200px;">
    15. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    16. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    17. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    18. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    19. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    20. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    21. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    22. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    23. 这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字
    24. div>
    25. <script>
    26. /* onmouseenter : 可以阻止事件冒泡 */
    27. function divMouseenter() {
    28. console.log("当鼠标进入了当前的DIV");
    29. }
    30. /* onmouseleave : 可以阻止事件冒泡 */
    31. function divMouseleave() {
    32. console.log("当鼠标移出了当前的DIV");
    33. }
    34. document.getElementById("box").onscroll = function () {
    35. console.log("当滚动元素的滚动条运行时");
    36. }
    37. /* 当鼠标的滚轮运行时 */
    38. window.onmousewheel=function (){
    39. console.log("当鼠标的滚轮运行时");
    40. }
    41. script>
    42. body>
    43. html>

    又是一年中秋时,今年你吃的什么味道的月饼呢(*^▽^*) 

    怀念学习油泼辣子口味的YYDS!!! 

  • 相关阅读:
    智能汽车软硬件产品CES展示汽车技术新亮点
    (2) ESP32获取图像电脑端显示,并跟踪对应颜色
    python | 自动化exe程序
    什么是信息摘要?
    UE4 EQS环境查询 学习笔记
    MALUNet:一种多关注,轻量级的皮肤病变分割UNet
    九齐NY8A051H单片机概述及特征应用
    Spring之Bean生命周期
    渗透测试-Python安全工具编程基础
    MySQL主主复制
  • 原文地址:https://blog.csdn.net/m0_46420244/article/details/126770460