Web APIs-事件

129 阅读1分钟

事件监听

语法

语法:dom元素.addEventListener(事件类型,处理函数)

let btn = document.querySelector('button')

事件监听三要素

  • 事件源 (谁被触发了)
  • 事件 (用什么方式触发,点击还是鼠标经过等)
  • 事件处理程序 (要做什么事情)

事件类型

image.png

应用

随机点名

<!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>Document</title>
    <style>
        div {
            margin: 100px auto;
            margin-left: 200px;
        }

        p {
            width: 300px;
            height: 50px;
            border: 1px solid #0af;
            text-align: center;
            line-height: 50px;
        }

        button {
            width: 150px;
        }
    </style>
</head>

<body>
    <div>
        <p>点名了</p>
        <button class="start">点名</button>
        <button class="end">结束</button>
        <p class="text"></p>
    </div>
    <script>
        // 创建数据组
        let names = ['浩良', '铭锋', '文斌', '坤哥', '刀郎', '和峰', '嘉辉']
        // 获得对象元素
        let newNames = []
        let p = document.querySelector('p')
        let start = document.querySelector('.start')
        let end = document.querySelector('.end')
        let text = document.querySelector('.text')
        // 创建定时器让名字循环显示
        // 定义变量 让变量可以在函数外使用
        let index, timeId, newname, aa = ''

        // 创建开始点击事件
        start.addEventListener('click', function () {
            clearInterval(timeId)
            timeId = setInterval(function () {
                // 创建随机索引值取得数组内容
                index = parseInt(Math.random() * names.length)
                // 修改网页元素内容
                p.innerText = names[index]
            }, 100);
        })
        // 创建结束点击事件
        end.addEventListener('click', function () {
            // 结束计时器
            if (index == undefined) {
                returns
            }
            clearInterval(timeId)
            aa += names[index]
            // 在数组中删除选择中的数据
            names.splice(index, 1)
            console.log(names);
            index = undefined
            if (names.length == 0) {
                // 当数组删空时禁用按钮
                start.disabled = true
                end.disabled = true
            }
            console.log(aa);
            text.innerHTML = aa
            // console.log(names[index]);

        })
    </script>
</body>

</html>

两种方法实现全选复选

<!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>Document</title>
    <style>
        div {
            margin: 100px auto;
            margin-left: 200px;
        }

        p {
            width: 300px;
            height: 50px;
            border: 1px solid #0af;
            text-align: center;
            line-height: 50px;
        }

        button {
            width: 150px;
        }
    </style>
</head>

<body>
    <div>
        <p>点名了</p>
        <button class="start">点名</button>
        <button class="end">结束</button>
        <p class="text"></p>
    </div>
    <script>
        // 创建数据组
        let names = ['浩良', '铭锋', '文斌', '坤哥', '刀郎', '和峰', '嘉辉']
        // 获得对象元素
        let newNames = []
        let p = document.querySelector('p')
        let start = document.querySelector('.start')
        let end = document.querySelector('.end')
        let text = document.querySelector('.text')
        // 创建定时器让名字循环显示
        // 定义变量 让变量可以在函数外使用
        let index, timeId, newname, aa = ''

        // 创建开始点击事件
        start.addEventListener('click', function () {
            clearInterval(timeId)
            timeId = setInterval(function () {
                // 创建随机索引值取得数组内容
                index = parseInt(Math.random() * names.length)
                // 修改网页元素内容
                p.innerText = names[index]
            }, 100);
        })
        // 创建结束点击事件
        end.addEventListener('click', function () {
            // 结束计时器
            if (index == undefined) {
                returns
            }
            clearInterval(timeId)
            aa += names[index]
            // 在数组中删除选择中的数据
            names.splice(index, 1)
            console.log(names);
            index = undefined
            if (names.length == 0) {
                // 当数组删空时禁用按钮
                start.disabled = true
                end.disabled = true
            }
            console.log(aa);
            text.innerHTML = aa
            // console.log(names[index]);

        })
    </script>
</body>

</html>