Javascript基础知识(二)事件

yizhihongxing

Javascript基础知识(二)事件

一、事件的定义和使用

事件是指在操作网页时所产生的一系列动作,例如鼠标点击、键盘输入、窗口滚动等等。通过事件,我们可以给网页绑定相应的响应函数,实现网页的交互功能。

在Javascript中,事件通常被定义为对象的一种,可以使用addEventListener()方法来绑定事件函数。示例代码如下:

document.getElementById('btn').addEventListener('click', function() {
    alert('Hello, world!');
});

上述代码会给id为"btn"的按钮添加一个"click"事件,当用户点击该按钮时,会触发alert()函数,输出"Hello, world!"的弹窗。

除了click事件外,还有很多其他的事件可以使用,例如mouseover、mouseout、keydown等等。

二、事件冒泡和捕获

在网页上,事件通常会存在着层次结构,例如一个按钮可能被嵌套在一个div元素内。当一个事件被触发时,它会沿着这个层次结构向上或者向下传递,而这个传递过程被称为事件的冒泡(Bubbling)和捕获(Capturing)。

事件冒泡是指事件从最具体的元素开始触发,然后沿着层次结构逐步向上传播,直到传到document对象为止。示例代码如下:

<div id="container">
    <button id="btn">Click me!</button>
</div>
document.getElementById('container').addEventListener('click', function(){
    alert('container clicked!');
});
document.getElementById('btn').addEventListener('click', function(){
    alert('button clicked!');
});

当我们点击按钮时,会依次弹出"button clicked!"和"container clicked!"的弹窗提示。

事件捕获则是从document对象开始,沿着层次结构向下传递,最后传到最具体的元素为止。使用addEventListener()方法时,可以在第三个参数中设置true,将事件设置为捕获模式,例如:

document.getElementById('container').addEventListener('click', function(){
    alert('container clicked!');
}, true);

这样当我们点击按钮时,就会先弹出"container clicked!"的弹窗提示,再弹出"button clicked!"的弹窗提示。

三、阻止冒泡和默认行为

在某些特殊情况下,我们希望阻止事件的冒泡或者默认行为,可以使用event对象提供的方法来实现。

阻止冒泡可以使用event.stopPropagation()方法,示例代码如下:

document.getElementById('btn').addEventListener('click', function(event){
    alert('button clicked!');
    event.stopPropagation();
});

当我们点击按钮时,只会弹出"button clicked!"的弹窗提示,而不会再弹出"container clicked!"的弹窗提示。

阻止默认行为可以使用event.preventDefault()方法,例如在表单提交时阻止页面跳转:

<form>
    <input type="text" name="username">
    <button id="submit-btn" type="submit">Submit</button>
</form>
document.getElementById('submit-btn').addEventListener('click', function(event){
    event.preventDefault();
    // 执行表单提交逻辑
});

上述代码会阻止页面跳转,然后执行表单提交逻辑。

四、on事件属性

除了使用addEventListener()方法外,我们还可以使用on事件属性来给元素绑定事件,例如:

<button id="btn" onclick="alert('button clicked!')">Click me!</button>

这样当我们点击按钮时,就会弹出"button clicked!"的弹窗提示。

不过这种方式有一个缺陷,就是如果元素上已经有了该事件的绑定,再使用on事件属性会覆盖原有的绑定。因此,不推荐使用on事件属性来绑定事件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript基础知识(二)事件 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js中的this的指向问题详解

    下面给出“js中的this的指向问题详解”的完整攻略: 一、概述 在JavaScript中,this关键字总是指向调用该函数的对象。但是,在不同的情况下,this指向的对象也会有所不同。因此,理解this的指向问题对于JavaScript编程非常重要。 二、this的四种绑定方式 this的指向主要有四种绑定方式: 默认绑定:独立的函数调用,this指向全局…

    JavaScript 2023年6月10日
    00
  • javascript结合Cookies实现浏览记录历史第2/3页

    根据你的要求,我将为你详细讲解“javascript结合Cookies实现浏览记录历史第2/3页”的完整攻略。 1. 准备工作 在使用 JavaScript 结合 Cookies 实现浏览记录历史第2/3页之前,需要做以下几项准备工作:- 安装和配置本地服务器,例如 Apache 或 Nginx 等。- 构建动态网页,即需要使用服务器端语言(例如 PHP、P…

    JavaScript 2023年6月11日
    00
  • JS中作用域和变量提升(hoisting)的深入理解

    作用域和变量提升是JavaScript中非常重要的概念。作用域指的是程序中变量的可访问范围,而变量提升意味着变量和函数声明可以在实际声明之前使用。理解这些概念可以帮助开发人员编写更好的JavaScript代码,并帮助他们避免错误。 作用域 JavaScript中有两种作用域:全局作用域和局部作用域。全局作用域的变量在整个程序中都是可访问的,而局部作用域的变量…

    JavaScript 2023年5月28日
    00
  • 前端项目中报错Uncaught (in promise)的解决方法

    当前端项目中使用异步编程(如Promise、async/await)时,有时会遇到Uncaught (in promise)报错,这种错误往往会导致程序崩溃,造成不良的用户体验。本文将详细讲解如何解决前端项目中报错Uncaught (in promise)的问题。 什么是Uncaught (in promise)报错? Uncaught (in promis…

    JavaScript 2023年5月28日
    00
  • jQuery中JSONP的两种实现方式详解

    jQuery中JSONP的两种实现方式详解 什么是JSONP JSONP是一种跨域请求的方法。跨域请求是指浏览器不能直接访问其他源的数据,而在使用 JSONP 进行跨域请求时,浏览器会将请求发送到同源的一个脚本文件中,脚本文件返回一个回调函数的调用和数据,浏览器在执行回调函数时获取数据。 JSONP的工作原理如下: 请求方动态生成一个标签,其中src属性指向…

    JavaScript 2023年5月27日
    00
  • JavaScript基础语法与数据类型介绍

    JavaScript基础语法与数据类型介绍 JavaScript 是一种用于网页编程的脚本语言,该语言核心由 ECMA-262 来定义。本文旨在为初学者提供 JavaScript 基础语法和数据类型的详细介绍。 基本语法 注释 注释是 JavaScript 代码中的重要组成部分,用于说明代码的作用和用法。使用 // 或 /* … */ 来注释单行或多行代…

    JavaScript 2023年5月17日
    00
  • 《javascript设计模式》学习笔记二:Javascript面向对象程序设计继承用法分析

    《javascript设计模式》学习笔记二:Javascript面向对象程序设计继承用法分析 一、前言 在Javascript中,对象继承有着重要的作用。深入学习Javascript的面向对象的程序设计,掌握继承用法,对于编写复杂的Javascript程序非常有用,本文将介绍Javascript中常用的继承方法和技巧。 二、原型链继承 原型链继承是Javas…

    JavaScript 2023年5月27日
    00
  • 解析Clipboard API剪贴板操作实例

    想要讲解”解析Clipboard API剪贴板操作实例”的完整攻略,需要分为以下几个部分:介绍Clipboard API、谈论Clipboard API的浏览器兼容性、解释如何使用Clipboard API进行剪贴板操作、展示两个具体的剪贴板操作示例。 一、什么是Clipboard API? Clipboard API是HTML5标准中新增的一个API。它提…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部