JavaScript 事件类型

Posted orochiz-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 事件类型相关的知识,希望对你有一定的参考价值。

1.点击事件

click:鼠标按下弹起完成后触发
mousedown:属性按下瞬间触发
mouseup:鼠标弹起瞬间触发
dblclick:鼠标双击触发

<script>
    document.onclick= function()
        console.log("click")
    
    document.onmousedown= function()
        console.log("mousedown")
    
    document.onmouseup= function()
        console.log("mouseup")
    
    document.ondblclick= function()
        console.log("dblclick")
    
</script>

鼠标单击时控制台打印:(说明click要晚于mouseup)

mousedown
mouseup
click

鼠标双击时控制台打印:

mousedown
mouseup
click
mousedown
mouseup
click
dblclick

2.鼠标移动事件

mouseenter:仅在鼠标进入当前容器时触发(忽略子元素)
mouseleave:仅在鼠标离开当前容器时触发(忽略子元素)

mouseover:不仅在鼠标进入当前容器时触发,进入当前容器的子元素时也会触发
mouseout:不仅在鼠标离开当前容器时触发,离开当前容器的子元素时也会触发

PS:mouseover和mouseout把当前元素和他的子元素当成一个个独立的元素,鼠标在这些元素间移动切换时,每次都会触发mouseover和mouseout事件

<script>
    var box = document.querySelector("#box")
    box.onmouseenter= function()
        console.log("mouseenter")
    
    box.onmouseout= function()
        console.log("mouseout")
    
    box.onmouseover= function()
        console.log("mouseover")
    
    box.onmouseleave= function()
        console.log("mouseleave")
    
</script>

技术图片

gif过程解析:
当鼠标进入父容器时,先触发了mouseover和mouseenter事件
接着鼠标进入子容器时,触发了mouseout和mouseover事件
鼠标离开子元素重新进入父容器时,触发了mouseout和mouseover事件
鼠标离开父容器时,触发了mouseout和mouseleave事件

3.change 事件

change 事件被<input>, <select>, 和<textarea> 元素触发
当用户提交对元素值的更改且失去焦点后触发

<body>
    <form action="">
        <input type="text">
        <br />
        性别:<input type="radio" value="男" name="gender1">男
        <input type="radio" value="女" name="gender">女
        <br />
        爱好:<input type="checkbox" value="看电影" name="hobby">看电影
        <input type="checkbox" value="听音乐" name="hobby">听音乐
        <input type="checkbox" value="听音乐" name="hobby">听音乐
        <div>
            <select name="city">
                <option value="北京">北京</option>
                <option value="广州">广州</option>
                <option value="深圳">深圳</option>
            </select>
        </div>
        <div>
            <textarea name="" id="" cols="30" rows="10"></textarea>
        </div>
    </form>
</body>
<script>
    var inputs = document.querySelectorAll("input")
    var select = document.querySelector("select")
    var textarea = document.querySelector("textarea")
    for(var i=0;i<inputs.length;i++)
        inputs[i].onchange = function()
            console.log("change value=" + this.value)
        
    
    select.onchange = function()
        console.log("change value=" + this.value)
    
    textarea.onchange = function()
        console.log("change value=" + this.value)
    
</script>

技术图片

4.键盘事件

keydown:某个键盘按键被按下时触发(如果按着不动,会持续触发)
press:某个键盘按键被按下并松开时触发(如果按着不动,会持续触发)
keyup:某个键盘按键被松开时触发

要想知道是按下了哪个键,可以用事件对象获取:
event.key 按键名
event.keyCode 按键码

<script>
    document.onkeydown = function(e)
        console.log("keydown")
        //获取按键码
        console.log(e.keyCode)//87
        // 获取按键名称
        console.log(e.key) //w
    
    document.onkeypress = function(e)
        console.log("press")
    
    document.onkeyup = function(e)
        console.log("keyup")
    
</script>

5.focus和blur 获取焦点和失去焦点时触发

当浏览器切换了当前页面时,会触发window.onfocus或window.onblur事件
这两个事件一般用在input输入框中

<script>
    //监听input输入框 获取和失去 焦点
    var input = document.querySelector("input")
    input.onfocus = function()
        console.log("input focus")
    
    input.onblur = function()
        console.log("input blur")
    
    // 监听页面切换
    window.onfocus = function()
        console.log("window focus")
    
    window.onblur = function()
        console.log("window blur")
    
</script>

技术图片

以上是关于JavaScript 事件类型的主要内容,如果未能解决你的问题,请参考以下文章

javascript 的 事件类型(事件)

浅谈JavaScript的事件(事件类型)

javascript中的事件类型

javascript事件类型汇总

JavaScript 事件类型,事件绑定,事件监听

javaScript事件事件类型之变动事件