博主信息
Lon
博文
22
粉丝
0
评论
0
访问量
2431
积分:0
P豆:48

JavaScript 事件

2021年10月09日 17:17:47阅读数:62博客 / Lon/ JavaScript

JavaScript 事件

了解更多请访问https://www.runoob.com/jsref/dom-obj-event.html

一、关于事件

1、什么是事件

事件就是在文档中或者在浏览器窗口中通过某些动作触发。比如,单击,鼠标经过,键盘按下等。事件通常和函数结合使用。

事件的作用:

(1)各个元素之间可以借助事件来进行交互

(2)用户和页面之间也可以通过事件来交互

(3)后端和页面之间也可以通过事件来交互(减缓服务器的压力)

二、事件的使用(重点)

1、HTML事件

HTML 事件可以是浏览器行为,也可以是用户行为。

以下是 HTML 事件的实例:

  • HTML 页面完成加载
  • HTML input 字段改变时
  • HTML 按钮被点击

在事件触发时 JavaScript 可以执行一些代码。

HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素。

语法:on+事件=‘函数();……‘

实例

  1. <button onclick="getElementById('demo').innerHTML=Date()">现在的时间是?</button>
  2. <p id="demo"></p>

以上实例中,JavaScript 代码将修改 id=”demo” 元素的内容。

2、事件类型

(1)鼠标事件

属性 描述 DOM
onclick 当用户点击某个对象时调用的事件句柄。 2
oncontextmenu 在用户点击鼠标右键打开上下文菜单时触发
ondblclick 当用户双击某个对象时调用的事件句柄。 2
onmousedown 鼠标按钮被按下。 2
onmouseenter 当鼠标指针移动到元素上时触发。 2
onmouseleave 当鼠标指针移出元素时触发 2
onmousemove 鼠标被移动。 2
onmouseover 鼠标移到某元素之上。 2
onmouseout 鼠标从某元素移开。 2
onmouseup 鼠标按键被松开。 2

(2)键盘事件

属性 描述 DOM
onkeydown 某个键盘按键被按下。 2
onkeypress 某个键盘按键被按下并松开。 2
onkeyup 某个键盘按键被松开。 2

(3)表单事件

属性 描述 DOM
onblur 元素失去焦点时触发 2
onchange 该事件在表单元素的内容改变时触发( <input>, <keygen>, <select>, 和 <textarea>) 2
onfocus 元素获取焦点时触发 2
onfocusin 元素即将获取焦点时触发 2
onfocusout 元素即将失去焦点时触发 2
oninput 元素获取用户输入时触发 3
onreset 表单重置时触发 2
onsearch 用户向搜索域输入文本时触发 ( <input="search">)
onselect 用户选取文本时触发 ( <input> 和 <textarea>) 2
onsubmit 表单提交时触发 2

(4)剪贴板事件

属性 描述 DOM
oncopy 该事件在用户拷贝元素内容时触发
oncut 该事件在用户剪切元素内容时触发
onpaste 该事件在用户粘贴元素内容时触发

3、event: 事件对象(获取事件对象和事件源(触发事件的元素)

Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

  • 什么时候会产生Event 对象呢?
    • 例如: 当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象.
  • 事件通常与函数结合使用,函数不会在事件发生前被执行!
  1. <!-- event: 事件对象 -->
  2. <button onclick="show(event)">click</button>
  3. <ul>
  4. <li>item1</li>
  5. <li>item2</li>
  6. <li>item3</li>
  7. <li>item4</li>
  8. <li>item5</li>
  9. </ul>
  10. <script>
  11. function show(ev) {
  12. // ev中有二个特别重要的属性
  13. // 1. 事件绑定者(主体)
  14. console.log(ev.currentTarget);
  15. // 2.事件触发者(目标)
  16. console.log(ev.target);
  17. console.log(ev.target === ev.currentTarget);
  18. }
  19. </script>

4、事件冒泡

子元素的同名事件,会沿着dom树向上逐级触发上级元素的同名事件

  1. <body>
  2. <!-- event: 事件对象 -->
  3. <button onclick="show(event)">click</button>
  4. <ul>
  5. <li>item1</li>
  6. <li>item2</li>
  7. <li>item3</li>
  8. <li>item4</li>
  9. <li>item5</li>
  10. </ul>
  11. <script>
  12. const lis = document.querySelectorAll("li");
  13. // 循环给每一个li添加点击事件
  14. lis.forEach(li => (li.onclick = ev => console.log(ev.currentTarget)));
  15. // onclick这种通过事件属性的添加的事件,是冒泡事件
  16. document.querySelector("ul").onclick = ev => console.log(ev.currentTarget);
  17. document.querySelector("body").onclick = ev => console.log(ev.currentTarget);
  18. document.documentElement.onclick = ev => console.log(ev.currentTarget);
  19. </script>
  20. </body>

5、阻止事件冒泡

在js中通过stopPropagation方法阻止事件继续传递。

  1. lis.forEach(li => (li.onclick = ev =>{
  2. ev.stopPropagation();//IE以外
  3. console.log(ev.currentTarget)
  4. }));

5、事件委托

事件委托描述的是将事件绑定在容器元素上,然后通过判断点击的target子元素的类型来触发相应的事件。
事件委托依赖于事件冒泡,如果事件冒泡到ul之前被禁用的话,那以下代码就无法工作了。

  1. <ul>
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. </ul>
  7. <script>
  8. document.querySelector("ul").onclick = ev => {
  9. // 1.事件绑定者
  10. // console.log(ev.currentTarget);
  11. // 2. 事件触发者
  12. // console.log(ev.target);
  13. console.log(ev.target.textContent);
  14. // console.log(ev.target === ev.currentTarget);
  15. };
  16. </script>

6、addEventListener()方法(可用于事件注册、监听。委派)

平常我们绑定事件的时候用dom.onxxxx=function(){}的形式,这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄。
但很多时候我们需要绑定多个处理句柄到一个事件上,而且还可能要动态的增删某个处理句柄,使用addEventListener()方法就能解决这个需求。

(1)语法

  1. // element.addEventListener(事件类型, 事件回调,是否冒泡false/true)
  2. element.addEventListener(event, function, useCapture);

第一个参数是事件的类型(比如 “click” 或 “mousedown”)。

第二个参数是当事件发生时我们需要调用的函数。

第三个参数是布尔值,指定使用事件冒泡还是事件捕获。此参数是可选的。

注意:请勿对事件使用 “on” 前缀;请使用 “click” 代替 “onclick”。

(2)实例

a、动态注册

  1. <button id="myBtn">点击</button>
  2. <script>
  3. const btn = document.querySelector("#myBtn")
  4. btn.addEventListener("click", () => alert("Hello World!"))
  5. </script>

上面代码示例使用 addEventListener() 方法将 click 事件附加到按钮。

b、向相同元素添加多个事件处理程序

  1. <button id="myBtn">点击</button>
  2. <script>
  3. const btn = document.querySelector("#myBtn")
  4. btn.addEventListener("click", () => alert("Hello World!"))
  5. btn.addEventListener("click", () => alert("JavaScript!"))
  6. </script>

c、自定义事件与事件派发

  1. <button id="myBtn">点击</button>
  2. <script>
  3. const btn = document.querySelector("#myBtn")
  4. let i = 0;
  5. btn4.addEventListener("click", () => {
  6. console.log("恭喜你, 又赚了: " + i + " 元");
  7. i += 0.5;
  8. });
  9. // 创建一个自定义事件
  10. const myclick = new Event("click");
  11. // setTimeout: 定时器,用于执行一次性的定时任务
  12. // setInterval: 定时器, 用于执行间歇性的定时任务
  13. // btn4.dispatchEvent(myclick);
  14. setInterval(() => btn4.dispatchEvent(myclick), 3000);
  15. </script>

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • javascript是指发生在HTML元素上的情,当在HTML页面中使用JavaScript时, JavaScript可以触发这些;其HTML可以是浏览器行为,也可以是用户行为。
    javascript有:1、UI;2、焦点;3、鼠标与滚轮;4、键盘与文本;5、复合;6、变动;7、HTML5;8、设备;9、触摸与手势
    javascript去除的方法:1、创建一个单击;2、用addEventListener的方式注册;3、用函数封装弹出框和移除即可。
    Javascript添加的方式有很多,本文主要列举三种添加的方式,包括添加到元素属性上、添加到Javascript脚本中、监听器。
    javascript类型都有:UI、焦点、鼠标与滚轮、键盘与文本、复合、变动、HTML5、设备、触摸与手势等。
    javascript驱动有:1、鼠标单击“onclick”;2、内容改变“onchange”;3、选中“onselect”;4、获得焦点“onFocus”;5、失去焦点“onBlur
    javascript捕获窗口关闭的方法:1、用javascript重新定义【window.onbeforeunload()】;2、在body标签里加入onUnload
    javascript属性有:​onabort、onblur、onchange、onclick、ondblclick、onerror、onfocus、onkeydown、onload、onreset、
    javascript中,委托就是利用冒泡的原理,将加到父元素或祖先元素上,触发执行效果。委托的优点:1、可以提高JS性能;2、可以动态添加DOM元素,不需要因为元素的变动而修改绑定。
    JavaScript中,可以使用event.stopPropagation()方法处理冒泡。event.stopPropagation()方法阻止冒泡到父元素,阻止任何父处理程序被执行。
    javascript处理的方法有:1、在标签的属性中添加,语法“<标签名 属性名="处理程序">”;2、使用源的属性绑定处理函数,语法“
    如今的JavaScript技术界里最火热的一项技术应该是‘委托(event delegation)’了。
    JavaScript 对象可以做到的三
    javascript常用:click、dblclick、mouseup、mouseout、keypress、keydown、keyup、error、load、resize、unload、blur、change
    js添加移除的方法:1、使用addEventListener()方法添加,用于向指定元素添加句柄;2、使用removeEventListener()方法删除,用于移除由addEventListener
    再看這篇前,建議各位可以先去看看 關於 JavaScript 循環,當然對於已經了解的人們就不用啦!這篇要討論的是 js 的流。
    Javascript冒泡是由节点产生,然后会影响到父节点,逐级上升,最后慢慢影响到整个页面,但是有时我们想要阻止冒泡的发生甚至本身的发生呢?本文就带大家一起来了解一下。
    javascript关闭浏览器的方法:1、使用onbeforeunload方法,关闭或刷新浏览器会触发此;2、使用popstate方法,代码为【history.pushState("123&
    熟悉javascript的朋友应该都使用过,比如鼠标的移动,鼠标的点击,键盘的输入等等。我们在javascript中监听这些,从而触发相应的处理。
    中,当前操作的那个元素就是源,比如网页元素中input有onclick,当点击input发送onclic时,源就是input。