0207 事件

news2024/11/28 8:35:53

事件监听

事件监听版本

事件类型

事件

概念

事件在编程时系统内发生的动作或者发生的事情

例子

点击按钮

鼠标经过

拖拽鼠标

事件监听(注册事件,绑定事件)

让程序员检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应

语法

元素.addEventListener('事件',要执行的函数)

事件监听三要素

事件源:哪个DOM元素被事件触发了,要获取DOM元素

事   件:用什么方式触发,比如:鼠标单击click,鼠标经过mouseover

事件调用什么函数:要做什么

代码

    <button>点击我</button>
    <div>经过我</div>
    <script>
      //1获取按钮元素
      let btn = document.querySelector("button")
      //2事件源
      btn.addEventListener("click", function () {
        alert("努力学习啊啊啊啊啊啊啊啊")
      })
      let box=document.querySelector('div')
      box.addEventListener("mouseover", function () {
        alert("努力挣钱啊啊啊啊啊啊啊啊")
      })
    </script>

例子  关闭二维码

二维码旁边有一个关闭按钮,点击然后关闭二维码

    <style>
      * {
        margin: 0;
        padding: 0;
      }

      .erweima {
        position: relative;
        width: 160px;
        height: 160px;
        margin: 100px auto;
        border: 1px solid #ccc;
      }

      .erweima i {
        position: absolute;
        left: -13px;
        top: 0;
        width: 10px;
        height: 10px;
        border: 1px solid #ccc;
        font-size: 12px;
        line-height: 10px;
        color: #ccc;
        font-style: normal;
        cursor: pointer;
      }
    </style>
  </head>

  <body>
    <div class="erweima">
      <img src="./images/code.png" alt="" />
      <i class="close_btn">x</i>
    </div>
    <script>
      //1获取元素
      let btn = document.querySelector(".close_btn")
      let code = document.querySelector(".erweima")
      //2事件监听
      btn.addEventListener("click", function () {
        code.style.display = "none"
      })
    </script>
  </body>

例子  随机点名

    <style>
      div {
        width: 200px;
        height: 40px;
        border: 2px solid brown;
        text-align: center;
        line-height: 40px;
      }
      button {
        margin-left: 65px;
      }

    </style>
  </head>
  <body>
    <div></div>
    <button>click this</button>
    <script>
      let box = document.querySelector("div")
      let btn = document.querySelector("button")

      function getRandom(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min
      }
      let arr = ["张三", "李四", "王五", "王朝", "马汉"]

      btn.addEventListener('click', function () {
        let random = getRandom(0, arr.length - 1)
        box.innerHTML = arr[random]
      })
    </script>
  </body>

例子  随机点名完善

    <style>
      div {
        width: 200px;
        height: 40px;
        border: 5px solid brown;
        text-align: center;
        line-height: 40px;
      }
      button {
        margin-left: 65px;
      }
    </style>
  </head>
  <body>
    <div>点击下面按钮开始抽人</div>
    <button>click this</button>
    <script>
      let box = document.querySelector("div")
      let btn = document.querySelector("button")

      function getRandom(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min
      }
      let arr = ["张三", "李四", "王五", "王朝", "马汉"]

      btn.addEventListener("click", function () {
        let random = getRandom(0, arr.length - 1)
        box.innerHTML = arr[random]

        //抽过的就删除
        arr.splice(random, 1)
        //抽完按钮就禁用,数组最后一个就禁用
        if (arr.length === 0) {
          btn.disabled = true
          btn.innerHTML='所有人都已经抽过了'
        }
      })
    </script>
  </body>

事件类型

鼠标事件

鼠标触发

click 鼠标点击

mouseover鼠标经过

mouseleave鼠标离开

焦点事件

表单获得光标

focus获得焦点

blur失去焦点

键盘事件

键盘触发

KeyDown键盘按下触发

keyup键盘抬起触发

文本事件

表单输入触发

input用户输入事件

例子  小米搜索框

    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      ul {
        list-style: none;
      }

      .mi {
        position: relative;
        width: 223px;
        margin: 100px auto;
      }

      .mi input {
        width: 223px;
        height: 48px;
        padding: 0 10px;
        font-size: 14px;
        line-height: 48px;
        border: 1px solid #e0e0e0;
        outline: none;
      }

      .mi .search {
        border: 5px solid #ff6700;
      }

      .result-list {
        display: none;
        position: absolute;
        left: 0;
        top: 48px;
        width: 223px;
        border: 1px solid #ff6700;
        border-top: 0;
        background: #fff;
      }

      .result-list a {
        display: block;
        padding: 6px 15px;
        font-size: 12px;
        color: #424242;
        text-decoration: none;
      }

      .result-list a:hover {
        background-color: #eee;
      }
    </style>
  </head>

  <body>
    <div class="mi">
      <input type="search" placeholder="小米笔记本" />
      <ul class="result-list">
        <li><a href="#">全部商品</a></li>
        <li><a href="#">小米11</a></li>
        <li><a href="#">小米10S</a></li>
        <li><a href="#">小米笔记本</a></li>
        <li><a href="#">小米手机</a></li>
        <li><a href="#">黑鲨4</a></li>
        <li><a href="#">空调</a></li>
      </ul>
    </div>
    <script>
        //1获取元素input
      let search = document.querySelector("input")
      //2获取元素.result-list
      let list = document.querySelector(".result-list")
      //3事件监听,获得光标事件
      search.addEventListener("focus", function () {
        //显示下拉菜单
        list.style.display = "block"
        //文本框变色
        search.classList.add("search")
      })
    </script>
  </body>

例子  输入文字,计算用户输入的字数

  <body>
    <div class="w">
      <div class="controls">
        <img src="images/tip.png" alt="" /><br />
        <textarea
          placeholder="说点什么吧..."
          id="area"
          cols="30"
          rows="10"
          maxlength="200"
        ></textarea>
        <div>
          <span class="useCount">0</span>
          <span>/</span>
          <span>200</span>
          <button id="send">发布</button>
        </div>
      </div>
      <div class="contentList">
        <ul></ul>
      </div>
    </div>
    <script>
      //1获取元素文本域area
      let area = document.querySelector("#area")
      //2获取字符长度usecount
      let useCount = document.querySelector(".useCount")
      //3监听绑定事件,用户输入的input
      area.addEventListener("input", function () {
        useCount.innerHTML = area.value.length
      })
    </script>
  </body>

例子  全选文本

    <style>
      * {
        margin: 0;
        padding: 0;
      }

      table {
        border-collapse: collapse;
        border-spacing: 0;
        border: 1px solid #c0c0c0;
        width: 500px;
        margin: 100px auto;
        text-align: center;
      }

      th {
        background-color: #09c;
        font: bold 16px "微软雅黑";
        color: #fff;
        height: 24px;
      }

      td {
        border: 1px solid #d0d0d0;
        color: #404060;
        padding: 10px;
      }

      .allCheck {
        width: 80px;
      }
    </style>
  </head>

  <body>
    <table>
      <tr>
        <th class="allCheck">
          <input type="checkbox" name="" id="checkAll" />
          <span class="all">全选</span>
        </th>
        <th>商品</th>
        <th>商家</th>
        <th>价格</th>
      </tr>
      <tr>
        <td>
          <input type="checkbox" name="check" class="ck" />
        </td>
        <td>小米手机</td>
        <td>小米</td>
        <td>¥1999</td>
      </tr>
      <tr>
        <td>
          <input type="checkbox" name="check" class="ck" />
        </td>
        <td>小米净水器</td>
        <td>小米</td>
        <td>¥4999</td>
      </tr>
      <tr>
        <td>
          <input type="checkbox" name="check" class="ck" />
        </td>
        <td>小米电视</td>
        <td>小米</td>
        <td>¥5999</td>
      </tr>
    </table>
    <script>
      //
      let all = document.querySelector("#checkAll")
      //
      let cks = document.querySelectorAll(".ck")
      //
      let span = document.querySelector("span")
      //点全选按钮,下面的小按钮都选上
      all.addEventListener("click", function () {
        for (let i = 0; i < cks.length; i++) {
          cks[i].checked = all.checked
        }
        //如果点击全选了,全选文字就变成取消,没有点击就是全选
        if (all.checked === true) {
          span.innerHTML = "取消"
        } else {
          span.innerHTML = "全选"
        }
      })

      //点击下面小按钮,全选按钮被选
      for (let i = 0; i < cks.length; i++) {
        cks[i].addEventListener("click", function () {
          for (let j = 0; j < cks.length; j++) {
            if (cks[j].checked === false) {
              all.checked === false
              return
            }
          }
          //
          all.checked = true
        })
      }
    </script>
  </body>

例子  购物车加减操作

  <style>
    div {
      width: 80px;
    }

    input[type=text] {
      width: 50px;
      height: 44px;
      outline: none;
      border: 1px solid #ccc;
      text-align: center;
      border-right: 0;
    }

    input[type=button] {
      height: 24px;
      width: 22px;
      cursor: pointer;
    }

    input {
      float: left;
      border: 1px solid #ccc;

    }
  </style>
</head>

<body>
  <div>
    <input type="text" id="total" value="1" readonly>
    <input type="button" value="+" id="add">
    <input type="button" value="-" id="reduce" disabled>
    <script>
      // 1. 获取元素  三个
      let total = document.querySelector('#total')
      let add = document.querySelector('#add')
      let reduce = document.querySelector('#reduce')
      // 2. 点击加号 事件侦听  
      add.addEventListener('click', function () {
        // console.log(typeof total.value)
        // total.value = total.value + 1
        // i++   隐式转换
        // i = i + 1 
        total.value++
        reduce.disabled = false
      })
      // 3. 点击减号 事件侦听  
      reduce.addEventListener('click', function () {

        total.value--
        if (total.value <= 1) {
          reduce.disabled = true
        }
      })
    </script>
  </div>
</body

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP立体安全:一网打尽攻击向量

PHP立体安全&#xff1a;一网打尽攻击向量 所谓攻击向量&#xff0c;就是指黑传递有效负载或恶意结果而可以访问计算机或网络服务器的路径或方法。 PHP的安全并不只有危险函数&#xff0c; 这只是冰山一角 。本文将介绍PHP从汇编层面到框架层面直到标准层面的所有攻击向量。 攻…

【H5】html实现微信授权登陆

html实现微信授权登陆前言网页授权的两种 scope 的区别开发指南第一步&#xff1a;用户同意授权&#xff0c;获取code第二步&#xff1a;通过 code 换取网页授权access_token第三步&#xff1a;拉取用户信息(需 scope 为 snsapi_userinfo)代码实现&#xff1a;效果图总结前言 …

用Python出了3000道数学题,外甥表示要正月剪头

人生苦短&#xff0c;快学Python&#xff01; 过年期间发现小外甥已经上小学了&#xff0c;我姐说老师今天给他们布置了寒假作业&#xff1a;每天坚持做乘法和加减法混合运算。 这我必须帮帮忙&#xff0c;用Python写了一段自动生成小学生计算题的代码&#xff0c;并支持导出…

Python入门之ChatGPT的API调(Python版)

一、Python环境部署 参考Python 环境搭建 | 菜鸟教程 Python官网&#xff1a;Welcome to Python.org Python文档下载地址&#xff1a;Our Documentation | Python.org 二、Thonny的安装 安装包地址&#xff1a;Thonny, Python IDE for beginners 三、ChatGPT的Key申请 网…

学Qt想系统的学习,看哪本书?

Qt 是一个跨平台应用开发框架&#xff08;framework&#xff09;&#xff0c;它是用 C语言写的一套类库。使用 Qt 能为 桌面计算机、服务器、移动设备甚至单片机开发各种应用&#xff08;application&#xff09;&#xff0c;特别是图形用户界面 &#xff08;graphical user in…

虹科分享|在ntopng中使用多用户模式

并非所有 ntop 用户都知道 ntopng 本机实现了多用户支持。也就是说&#xff0c;您可以使用ntopng收集和分析来自多个用户的流量&#xff0c;并向每个用户显示自己的流量&#xff0c;隐藏其余所有流量。 您需要做的就是非常简单&#xff1a; 1. 启动 ntopng 并将其配置为接收受…

Python将字典转换为csv

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

设计模式C++实现4:装饰模式

前言 参考大话设计模式&#xff1b; 详细内容参见大话模式一书第六章&#xff0c;该书使用C#实现&#xff0c;本实验通过C语言实现。 装饰模式&#xff08;Decorator&#xff09;&#xff0c;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰…

MapReduce工作原理

一.MapReduce工作流程图 1、分片操作&#xff1a;FileInputstream&#xff0c;首先要计算切片大小&#xff0c;FileInputstream是一个抽象类&#xff0c;继承InputFormat接口&#xff0c;真正完成工作的是它的实现类&#xff0c;默认为是TextInputFormat&#xff0c;TextInputF…

docker一键部署网址导航+博客+管理系统(强势开源)

花森门户 在线地址(首次加载请耐心等待)&#xff1a;http://n.huasen.cc/ 码云仓库地址&#xff1a;https://gitee.com/HuaSenJioJio/huasenjio-compose Github仓库地址&#xff1a;https://github.com/huasenjio/huasenjio-compose huasenjio 系列网站增添新作品&#xff0c;&…

CSCCTF-2019-Qual-FlaskLight

网页里有提示 参数为search&#xff0c;GET传值 测试{{7*7}} 存在SSTI模板注入&#xff0c;在这里简单介绍python魔法函数&#xff0c;与Flask内置 __class__ 返回类型所属的对象 __mro__ 返回一个包含对象所继承的基类元组&#xff0c;方法在解析时按照元组的顺序解析。 __bas…

Dropout的深入理解(基础介绍、模型描述、原理深入、代码实现以及变种)

目录前言一、DropOut简介1-1、DropOut论文图解1-2、DropOut介绍1-3、DropOut产生动机1-4、DropOut流程简介二、模型描述2-1、公式描述2-2、神经网络图描述2-3、一些需要注意的问题&#xff01;三、Dropout代码实现以及相关变种&#xff08;部分有实现&#xff09;3-1、Dropout实…

Part 4 描述性统计分析(占比 10%)——上

文章目录【后续会持续更新CDA Level I&II备考相关内容&#xff0c;敬请期待】【考试大纲】【考试内容】【备考资料】1、统计基本概念1.1、统计学的含义及应用1.1.1、统计学的含义1.2.1、统计学的应用1.2、统计学的基本概念1.2.1、数据及数据的分类1.2.2、总体和样本1.2.3、…

体系结构原则

构建和设计软件解决方案时应考虑到可维护性。 本部分概述的原则可帮助指导你作出体系结构决策&#xff0c;生成简洁、可维护的应用程序。 一般而言&#xff0c;在这些原则的指导下构建的应用程序各部分间可通过显式接口或消息传送系统进行通信&#xff0c;并非松散耦合的离散组…

WinRAR自解压实现安装程序并开机自启

1、选择要打包的文件&#xff0c;右键添加到压缩文件&#xff0c;勾选“创建自解压格式压缩文件” 2、切换到高级&#xff0c;选择“自解压文件选项” 3、常规 - 指定解压缩路径 4、安装 - 解压缩后运行指定程序 5、模式 - 隐藏全部 全部显示&#xff1a;显示启动对话框&#…

bcript 算法

一、简介 今天要给大家介绍的一种“加密”算法叫做 bcrypt&#xff0c;bcrypt 是由 Niels Provos 和 David Mazires 设计的密码哈希函数&#xff0c;他是基于 Blowfish 密码而来的&#xff0c;并于 1999 年在 USENIX 上提出。 除了加盐来抵御 rainbow table 攻击之外&#xf…

Vue3电商项目实战-首页模块6【22-首页主体-补充-vue动画、23-首页主体-面板骨架效果、4-首页主体-组件数据懒加载、25-首页主体-热门品牌】

文章目录22-首页主体-补充-vue动画23-首页主体-面板骨架效果24-首页主体-组件数据懒加载25-首页主体-热门品牌22-首页主体-补充-vue动画 目标&#xff1a; 知道vue中如何使用动画&#xff0c;知道Transition组件使用。 当vue中&#xff0c;显示隐藏&#xff0c;创建移除&#x…

C语言基础(十)—— 文件操作

1. 概述1.1磁盘文件和设备文件磁盘文件指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上&#xff0c;使用时才调入内存。设备文件在操作系统中把每一个与主机相连的输入、输出设备看作是一个文件&#xff0c;把它们的输入、输出等同于对磁盘文件的读和写。1.2 磁盘文件的…

【C++】nullptr C++中的空指针(C++11)

前言 在平时我们写C/C代码时你可能会看到有人使用NULL表示空指针&#xff0c;也有人用nullptr表示空指针&#xff0c;那么你可能会很好奇它们都是空指针吗&#xff1f;为什么空指针有两种写法&#xff1f;下面就带你了解这背后的原理。 我们都知道NULL是C语言中的空指针&#x…

JDK14 新特性详解,2020-03-17 正式发布

预览版&#xff1a;该功能在当前版本可以使用&#xff0c;如果效果不是很好的话&#xff0c;可能以后的其他版本就会删去该功能。 最终版&#xff1a;该功能在之前版本效果很好&#xff0c;之后的每个版本中都会存在该功能。 1、Switch&#xff08;最终版&#xff09; 和之前…