1.6 JavaScript事件
1.6.1 事件介绍
如下图所示的百度注册页面,当我们用户输入完内容,百度可以自动的提示我们用户名已经存在还是可以使用。那么百度是怎么知道我们用户名输入完了呢?这就需要用到JavaScript中的事件了。
什么是事件呢?HTML事件是发生在HTML元素上的 “事情”,例如:
-  按钮被点击 
-  鼠标移到元素上 
-  输入框失去焦点 
-  ........ 
而我们可以给这些事件绑定函数,当事件触发时,可以自动的完成对应的功能。这就是事件监听。例如:对于我们所说的百度注册页面,我们给用户名输入框的失去焦点事件绑定函数,当我们用户输入完内容,在标签外点击了鼠标,对于用户名输入框来说,失去焦点,然后执行绑定的函数,函数进行用户名内容的校验等操作。
1.6.2 事件绑定
JavaScript对于事件的绑定提供了2种方式:
-  方式1:通过html标签中的事件属性进行绑定 例如一个按钮,我们对于按钮可以绑定单击事件,可以借助标签的onclick属性,属性值指向一个函数。 <body> <input type="button" id="bt1" value="按钮1" onclick="on()"> <input type="button" id="bt2" value="按钮2"> <script> function on(){ alert("按钮1被单击了"); } </script> </body>
-  方式2:通过DOM中Element元素的事件属性进行绑定 
    //为按钮2添加单击事件
    document.getElementById('bt2').onclick = function(){
        alert("按钮2被单击了");
    }
  需要注意的是:事件绑定的函数,只有在事件被触发时,函数才会被调用。
1.6.3 常见事件
下面列举一些比较常用的事件属性
| 事件属性名 | 说明 | 
|---|---|
| onclick | 鼠标单击事件 | 
| onblur | 元素失去焦点 | 
| onfocus | 元素获得焦点 | 
| onload | 某个页面或图像被完成加载 | 
| onsubmit | 当表单提交时触发该事件 | 
| onmouseover | 鼠标被移到某元素之上 | 
| onmouseout | 鼠标从某元素移开 | 
onfocus:获取焦点事件,鼠标点击输入框,输入框中光标一闪一闪的,就是输入框获取焦点了
1.6.4 案例
1.6.4.1 需求说明
接下来看一个案例:
需求如下3个:
-  点击 “点亮”按钮 点亮灯泡,点击“熄灭”按钮 熄灭灯泡 
-  输入框鼠标聚焦后,展示小写;鼠标离焦后,展示大写。 
-  点击 “全选”按钮使所有的复选框呈现被选中的状态,点击 “反选”按钮使所有的复选框呈现取消勾选的状态。 
效果如图所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件-案例</title>
</head>
<body>
    <img id="light" src="img1/off.gif"> <br>
    <input type="button" value="点亮" onclick="on()">
    <input type="button" value="熄灭" onclick="off()">
    <br> <br>
    <input type="text" id="name" value="IT" onfocus="focus()" onblur="blur()">
    <br> <br>
    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
    <br>
    <input type="button" value="全选" onclick="checkall()">
    <input type="button" value="反选" onclick="reverse()">
</body>
<script>
    function on() {
        var li = document.getElementById('light');
        li.src = "img1/on.gif";
    }
    function off() {
        var li = document.getElementById('light');
        li.src = "img1/off.gif";
    }
    function focus() {
        var input = document.getElementById("name");
        //b. 将值转为小写
        input.value = input.value.toLowerCase();
       
    }
    function blur() {
        var input = document.getElementById("name");
        //b. 将值转为大写
        input.value = input.value.toUpperCase();
    }
    function checkall(){
        var checks = document.getElementsByName("hobby");
        for (let i = 0; i < checks.length; i++) {
            const element = checks[i];
            element.checked = true;            
        }
    }
    function reverse(){
        var checks = document.getElementsByName("hobby");
        for (let i = 0; i < checks.length; i++) {
            const element = checks[i];
            element.checked = false;            
        }
    }
</script>
</html>


















