[想试试看JavaScript ] 各种事件处理

事件种类

浏览器的事件有非常多种,这篇介绍一些比较常见的事件
事件处理,是指程序不会马上执行,直到触发事件的条件之後,程序就会自动执行
也就是说,比较不同的事件就是在比较不同的触发条件

滑鼠事件

  • click
    滑鼠点击时触发。
  • dblclick
    滑鼠「连点两次」时触发
  • mousedown / mouseup
    滑鼠点下时触发 mousedow ,放开滑鼠触发 mouseup
  • mouseenter / mousemove / mouseleave
    1.当滑鼠游标移入元素,会先触发 mouseenter
    2.滑鼠游标在元素移动时,会连续触发 mousemove
    3.滑鼠游标离开元素,触发 mouseleave

搭配事件物件

滑鼠事件很常搭配事件物件中的 event.pageXevent.pageY 来得到目前在网页中的座标。

可以做的效果

mousedownmouseupmousemove 可以做一些,点击图片或元素,接着拖曳他们移动的效果
clickdblclick 可以做一些可以给使用者修改的表单或表格只要双击滑鼠、就更改表格的内容。

键盘事件

  • keydown
    按下键盘时会触发
  • keypress
    按下键盘时会触发,keypress 只会针对输出文字符号的按钮有效。
    所以ESC、方向键、倒退按键、大小写、shift都没有用。
  • keyup
    放开键盘按钮时触发 keydown

如果我们对同一个元素,绑定了这三个键盘事件,这三个键盘事件触发的顺序为
keydown -> keypress -> keyup

查询按下的按钮

如果想知道,按下了什麽按钮可以透过事件物件的 event.key 来查询

下面这段程序码可以测试看看,按下了什麽按键,并且显示在主控台

<!DOCTYPE html>
<html lang="en">
<head>
    <title>键盘事件</title>
    <script>
        function init(){
            var btn=document.getElementById("btn");
            btn.addEventListener('keypress',function(e){
                console.log('按下 keypress');
                console.log('keypress: ',e.key);
            });
            btn.addEventListener('keydown',function(e){
                console.log('按下 keydown');
                console.log("keydown: ",e.key);
            })
            btn.addEventListener('keyup',function(e){
                console.log("触发 keyup");
                console.log("keyup: ",e.key);
            })
        }

    </script>
</head>
<body onload="init()">// 使用 load 事件,body 载入完成执行 init 函式
    <input type="text" id="btn">
</body>
</html>

可以做的效果

知道使用按了什麽按钮可以做什麽呢?
通常会在使用者在 按下 enter 时,使用 keydown 事件来送出表单。
或者制作一些游戏,利用方向键控制车子前进、移动。


里面提了关於事件物件与 load 事件,这些就等後面的篇章在解释罗~
祝大家中秋节快乐^^


<<:  [Day05]程序菜鸟自学C++资料结构演算法 – 阵列Array List实作之二

>>:  Day19-Component

建立 Line Bot(1)

前几天已经建立好能读取信件内容中验证码的 GAS 专案,接下来就是要准备建置最重要的 Line Bo...

Day 30 - 终点亦是起点

Umm...一转眼就30天了~ 在这三十天中,我们快速的复习了Vue的基础用法如条件渲染、双向绑定、...

稳定大公司 v.s. 未来独角兽的新创

在求职中在大公司或新创任职都有各自的拥护者,自己曾经也迷茫要做哪一种选择。 首先,定义大公司是指已经...

[Day12] Esp32s用AP mode + LED - (认识序列埠监控视窗&程序码讲解)

1.前言 看完上一篇的利用Esp32s的AP mode控制LED灯了吧,是不是觉得很神奇阿,那本篇会...

[Day 17] Leetcode 56. Merge Intervals (C++)

前言 连假结束加班加起来QQ 今天就来点轻松点,一样是top 100 liked的题目56. Mer...