位置: IT常识 - 正文

JavaScript注册监听事件与清除监听事件(js怎么注册)

编辑:rootadmin
JavaScript注册监听事件与清除监听事件

推荐整理分享JavaScript注册监听事件与清除监听事件(js怎么注册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js用户注册界面代码,js用户注册界面代码,js用户注册界面代码,javascript注册界面,javascript登陆注册,js注册验证,js注册验证,js注册验证,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript中有两种方法可以注册监听事件,一种是传统的注册方式,on+事件名称的注册方法,如btn.onclick,还有方法监听事件注册方式, addEventListener()和ie8以下的attachEvent()。

注册监听事件传统方式

语法格式:元素名.on+事件名称 = function () {函数代码}

这种方法只能为元素注册一个事件,如果注册多个,那么就会覆盖。

这种方式比较简单,看一个案例

点击事件案例:判断闰年

我们写一个输入框和按钮,给按钮注册点击事件,在按钮点击的时候,判断输入框里面输入的值是否是闰年。

<input type="text" id="inp" /> <button id="nian">输入年份后点击判断</button>var nian = document.getElementById("nian");var inp = document.getElementById("inp");nian.onclick = function () { var a = inp.value; if (a == null || a == 0) { alert("没有输入年份!"); } else if (a <= 0) { alert("输入年份有错误!"); } else if (a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)) { alert("输入年份为闰年!"); } else { alert("输入年份不是闰年!"); }};

 方法监听事件注册方式addEventListener()

我们使用addEventListener()来注册监听。它可以为一个事件源注册多个事件。

语法:

btn.addEventListener('click', function () {函数代码块}, false)

第一个参数:事件类型,如click

第二个参数:回调函数,事件发生后要运行的内容

第三个参数:布尔值,默认是false,决定是否支持冒泡

注意,在在标准浏览器浏览器下,addEventListener()是可用的。但是在ie8之下addEventListener()无法使用。这时候我们使用attachEvent()来注册监听事件。

attachEvent()JavaScript注册监听事件与清除监听事件(js怎么注册)

语法:

btn.attachEvent('onclick',function(){函数代码块},false)

参数是基本相同,注意attachEvent()的第一个参数,需要在事件前面加'on'。

addEventListener()与attachEvent()的兼容

在不同浏览器下,存在注册监听事件的兼容问题,我们可以写一个函数来解决这个问题,把函数封装起来方便随时调用,这样也可以加深两个方法的理解。

代码如下,我们给按钮注册点击事件。 注释有详解。

var btn = document.getElementById('btn')//获取按钮function clicks(controls, events, buer) {//三个形参 if (controls.addEventListener) {//判断addEventListener是否可以使用 controls.addEventListener(events, function () {//添加监听事件 console.log('标准浏览器');//打印输出 }, buer) } else {//判断不兼容addEventListener,所以使用attachEvent controls.attachEvent('on' + events, function () {//注意不要忘了这个on console.log('非标准浏览器'); }, buer) } } clicks(btn, 'click', false)//调用与传参移除监听事件传统方法的移除

我们在使用 元素名.on+事件名称 = function () {函数代码}的方式注册监听事件的时候,只需要使用

元素名.on+事件名称 =null,就可以移除监听事件。

移除方法监听事件注册方式removeEventListener()

语法:元素名.removeEventListener('事件名称',函数)

内容分别是:移除哪个元素(事件源/元素名),通过什么方式触发(事件类型)的什么事件(事件回调)

removeEventListener()是常用的移除监听事件的方法。但在ie8以下,它是不可以使用的。所以我们使用detachEvent()来为ie8之下的浏览器清除监听事件。

btn.detachEvent()

元素名.detachEvent('on+事件名称, 函数)

 基本与removeEventListener()相同,但注意事件名称前面加'on'

removeEventListener()与btn.detachEvent()的兼容

我们可以效仿addEventListener()与attachEvent()的兼容解决办法写一个函数。

如下:

function getEvent(element, eventName, callback) {if (element.removeEventListener) { //标准浏览器的注册监听 element.removeEventListener(eventName, callback)} else { //非标准浏览器的注册监听 element.detachEvent('on' + eventName, callback)}}getEvent(btn,'click',fun)案例:注册监听与移除事件的结合

我们写一个案例,来实现注册监听,和移除事件。

首先写两个案例,第一个按钮注册监听事件,如点击事件,点击一下就打印一串文字。为第二个按钮注册点击事件,第二个按钮点击后移除事件,使得第一个按钮点击后无法打印文字。

也要注意注册监听和移除事件的兼容,一并写入代码中。

代码如下:

var btn = document.getElementById('btn') var btn1 = document.getElementById('btn1') function fun() {//函数:打印一串文字 console.log('标准浏览器'); } function fn() {//函数:打印一串文字 console.log('非标准浏览器'); } function clicks(controls, events, buer) {//为按钮1注册点击事件的兼容 if (controls.addEventListener) { controls.addEventListener(events, fun, buer)//调用之前的打印函数 console.log('添加了点击事件'); } else { controls.attachEvent('on' + events, fn, buer) console.log('添加了点击事件'); } } clicks(btn, 'click', false)//函数调用 btn1.onclick = function () {//为按钮2注册监听事件 function rem(controls,events, functionname) {//为按钮2注册移除事件的兼容 if (controls.removeEventListener) { controls.removeEventListener(events, functionname) } else { controls.detachEvent('on' + events, functionname) } } rem(btn, 'click', fun)//函数调用 console.log('现在清除了按钮1的点击事件'); }

本文链接地址:https://www.jiuchutong.com/zhishi/298608.html 转载请保留说明!

上一篇:综述:计算机视觉中的通道注意力机制(计算机视角技术)

下一篇:共识算法涉及的概念(共识算法主要解决什么问题)

  • 清理化粪池交什么印花税
  • 税后经营净利润加折旧与摊销
  • 由旅行社开具的电子普票代订机票能抵扣税吗?
  • 关税消费税增值税计算公式
  • 个体户个税计算方法2022税率表
  • 分公司亏损总公司怎么办
  • 对外投资固定资产的账务处理
  • 银行理财算投资吗
  • 公司注册住所要求
  • 房地产企业开发间接费用包括哪些
  • 存货暂估入账需要什么单据?
  • 一般纳税人取得普票会计分录
  • 变更税务登记证需要提供哪些材料
  • 自制农产品采摘机器设备
  • 工会经费自留比例
  • 去年已支付的费用怎么查
  • 咨询服务费是否可以税前扣除
  • 库存商品期末计量
  • 跨年成本发票红冲怎么做会计分录
  • 意外保险计入职工薪酬
  • 建筑企业员工培训
  • 电子票据查询打印
  • 电动车固定资产报废年限是多少年
  • 月销售不超过10万免征哪些税
  • 微软输入法中文输入卡顿
  • 怎么让资产负债率下降
  • 委托检验报告能否作为处罚依据
  • 关于其他应收款账户的说法
  • 入库的原材料单价怎么求
  • .ini是什么类型文件?
  • php中file
  • 银行存放同业的钱安全吗
  • 从午夜穹顶看育空河,加拿大育空道森市 (© Robert Postma/Getty Images)
  • vue中使用swiper6
  • yii2框架运行原理
  • 享受所得税优惠情况说明
  • 房地产企业项目开发法律风险
  • 阳光穿透云层是什么效应
  • php的execute
  • deepwiser怎么用
  • 广告费可以结转几年扣除
  • 没有公网ip如何实现外网访问路由器
  • 4s店试驾车出售收益为什么不能做主营业务收入
  • python的opencv
  • web课程设计模板
  • php运算符@符号
  • vue项目使用less
  • pythongui库
  • sqlserver还原数据库一直显示正在执行0%
  • 销售价格确定的方法有
  • 普通增值税发票会计科目如何写?
  • 新准则职工福利费包括哪些
  • 财务费用的内容包括哪些
  • 同一控制下的企业合并和非同一控制下的企业合并的区别
  • 企业代扣的个人所得税款收入属于哪个会计科目
  • 本月没有认证的进项税怎么做分录
  • 对公户单笔转账有限额吗
  • 销售开票怎么做会计分录
  • 赠送货物金额为多少
  • 超市会计如何核算成本
  • 成本收入率和收入成本率的区别
  • 兼职会计做什么工作
  • 关于sql的几道小知识
  • mysql 定点数和浮点数
  • centos pam
  • win7电脑找不到无线网络连接图标
  • win10预览版和正式版
  • soffice.exe - soffice进程是什么意思 有什么用
  • win8运行速度慢怎么办
  • google collections
  • 前端笛卡尔积
  • css position: absolute、relative详解
  • vue怎样使用
  • 基于JAVASCRIPT实现的可视化工具是
  • centos6.9查看网卡状态
  • 利用python中的运算符可以编程解决你身边的哪些问题
  • ubuntu系统的手机
  • 国家税务总局开票系统怎么开票
  • 购置税缴费方式
  • 2018年建筑业增值税税率变更文件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设