首页 > 编程语言 >JavaScript(六)事件处理

JavaScript(六)事件处理

时间:2023-07-05 19:33:21浏览次数:38  
标签:事件处理 setTimeout 定时器 JavaScript HTML 事件 btn Event

常见的 HTML 事件

常见HTML事件

事件描述
onchange HTML 元素已被改变
onclick 用户点击了 HTML 元素
onmouseover 用户把鼠标移动到 HTML 元素上
onmouseout 用户把鼠标移开 HTML 元素
onkeydown 用户按下键盘按键
onload 浏览器已经完成页面加载

事件处理方式

  • HTML事件:html元素的属性使用JS代码,html代码和 JS 代码揉在一起

<button id="btn" onclick="clickhandle()">按钮</button>
<script>
   function clickhandle(){
       console.log("点击");
  }
</script>
  • DOM0级事件:无法同时添加多个事件

 <button id="btn">按钮</button>
   <script>
       var btn=document.getElementById("btn");
       btn.onclick=function(){
           console.log("dianji");
      }
   </script>
  • DOM2级事件使用率最高

<button id="btn">按钮</button>
   <script>
       var btn=document.getElementById("btn");
      btn.addEventListener("click",function(){
           console.log("dom2");
      });
   </script>

鼠标事件

click, dbclick双击, mousedown按下, mousemove 移动, wheel 滚轮

Event事件对象

Event监听每个html元素的事件

  • Event.target 事件作用的当前元素

  • Event.type 事件类型

  • Event.preventDefault() 取消浏览器对当前事件的默认行为,比如点击链接会跳转到另一个页面,使用此方法就不会跳转了

  • Event.stopPropagation() 事件冒泡:阻止事件在DOM中继续传播,防止再触发定义在父节点上的监听函数。但是不包括在当前节点上其他的事件监听函数

<button id="btn">按钮</button>
<script>
   var btn=document.getElementById("btn");
   btn.addEventListener("click",function(event){
       console.log(event.target);
  });
</script>

键盘事件

事件类型:keydown, keypress, keyup

Event.keycode,键盘事件的唯一标识

表单事件

事件类型:

  • input 输入框。

  • select 输入框鼠标选中的值

  • change 输入框的值发生变化,失去焦点或enter后,

  • reset 重置表单的值

  • submit 提交

事件代理(事件委托)

由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点统一处理多个子元素的事件,这种方法叫做事件代理

定时器

js定时执行代码,有setTimeout()setInterval()

  • setTimeout() 延迟执行某个函数或代码,返回值为定时器编号(整数),用以取消定时器,setTimeout() 里使用this调用的是全局变量,不是局部变量

// 定义定时器
var timerId=setTimeout(func|code,delay)

// 取消定时器
clearTimeout(timerId)
  • setInterval()每间隔一定时间执行一次,用法与setTimeout()一致,取消 clearInterval()

防抖debounce

定义:对于短时间内连续触发的事件(如滚动事件),防抖的含义就是让某个时间期限内 事件处理函数只执行一次。利用 setTimeout()防抖算是性能优化,但是遇到的频率很高,处理不当或放任不管容易引起浏览器卡死。

节流throttle

类似防抖,如输入框实时搜索

标签:事件处理,setTimeout,定时器,JavaScript,HTML,事件,btn,Event
From: https://www.cnblogs.com/yjh1995/p/17529616.html

相关文章

  • JavaScript(五)浏览器操作
    浏览器对象windowwindow对象不但充当全局作用域,而且表示浏览器窗口。window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。navigator:navigator对象表示浏览器的信息,最常用的属......
  • 【12.0】前端基础JavaScript之DOM
    【12.0】前端基础JavaScript之DOM【一】什么是DOM/BOM截至目前为止,我们虽然已经学会了js语法,但是还是没办法跟浏览器进行交互BOM(BrowserObjectModel)浏览器对象模型js代码操作浏览器DOM(DocunmentObjectModel)文档对象模型js代码操作标签【二】Window......
  • 5-事件处理
    1-示例代码importPySimpleGUIassgsg.theme('GrayGrayGray')layout=[[sg.Text("数据收集中...",key='info',size=(15,1),font="Consolas",)],[sg.Text('姓名:'),sg.Input('我不是张三',key='......
  • JavaScript
    JS变量//varletconstvar:很少使用,全局作用域let:值可以被修改const:值不能被修改,而且需要在声明时初始化数值console.log('helloworld') //这是我的第一个js代码;letbbb//声明bbb=30//赋值bbb=31//修改console.log(bbb)......
  • 单线程JavaScript为何如此高效
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址什么是js执行机制JavaScript的执行机制指的是JavaScript代码在运行时的工作方式和顺序。它涉及以下几个关键概念:单线程:JavaScript是一门单线程的编程语言,意味着它只有一个主线程用于执行代码。这意味着JavaScrip......
  • JavaScript发展历史(JS)
    JavaScript发展历史1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许他们直接嵌入网页。另一个是发明一......
  • 常用的前端JavaScript方法封装
     1、输入一个值,返回其数据类型**functiontype(para){returnObject.prototype.toString.call(para)} 2、数组去重functionunique1(arr){return[...newSet(arr)]}functionunique2(arr){varobj={};returnarr.filter(ele=>{if......
  • 【10.0】前端基础之JavaScript进阶
    【10.0】前端基础之JavaScript进阶【一】自定义对象可以看成Python中的字典,但是在JS中的自定义对象要比Python里面的字典操作起来更方便【1】创建自定义对象方式一vard={"键":"值",};操作方法vardict={"name":"dream","age":18};vardict={"name":"dream&......
  • JavaScript 数组的 reduce 方法有哪些应用
    JavaScript数组的reduce方法有哪些应用JavaScript中的reduce()方法可以用于将数组元素汇总为单个值,它接受一个回调函数作为参数,并在每个数组元素上调用该函数,以便将其累加到一个累加器变量中。下面是一些实际应用:数组求和:使用reduce()方法将数组元素相加,从而计算数组的总......
  • 【8.0】前端基础之JavaScript引入
    【8.0】前端基础之JavaScript引入【一】什么是JavaScriptjs也是一门编程语言,他可以写后端代码JavaScript想一统天下,前后端都写于是node.js支持JS代码跑在后端服务器上但是并不能完美的实现JavaScript和Java一毛钱关系都没有,纯粹是为了蹭Java的热度【二】JavaScrip......