首页 > 其他分享 >Dom事件基础(pink老师课程笔记)

Dom事件基础(pink老师课程笔记)

时间:2023-11-20 19:35:02浏览次数:32  
标签:pink function const Dom 笔记 querySelector addEventListener input document

事件监听(绑定)

事件和事件监听

  1. 事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮
  2. 让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册事件
    比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等等

语法

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

注意:

  1. 事件类型要加引号
  2. 函数是点击之后再去执行,每
    次点击都会执行一次

三要素

  • 事件源: 那个dom元素被事件触发了,要获取dom元素
  • 事件类型: 用什么方式触发,比如鼠标单击 click、鼠标经过 mouseover 等
  • 事件调用的函数: 要做什么事
<button>点击</button>
<script>
     // 需求:点击按钮,弹出对话框
     const btn = document.querySelector('button')
     btn.addEventListener('click', function () {
         alert('good morining')
     })
</script>

关闭广告

 <div class="box">
        广告
        <button>X</button>
    </div>

    <script>
        // 需求:点击按钮,关闭box
        const btn = document.querySelector('button')
        const box = document.querySelector('.box')
        btn.addEventListener('click', function () {
            box.style.display = 'none'
        })
    </script>

核心:利用样式的显示和隐藏完成, display:none 隐藏元素 display:block 显示元素

随机点名案例

<body>
    <h3>随机点名</h3>
    <div class="box">
        <span>名字是:</span><span class="uname">小李</span>
        <button class="open">open</button>
        <button class="close">close</button>
    </div>

    <script>
        const arr = ['小李', '小王', '小朱', '小杨', '小苏', '小赵']
        const uname = document.querySelector('.uname')
        // 定时器的全局变量
        let timeId = 0
        // 开始
        const open = document.querySelector('.open')
        open.addEventListener('click', function () {
            timeId = setInterval(function () {
                const random = parseInt(Math.random() * arr.length)
                uname.innerHTML = arr[random]
            }, 35)
        })
        const close = document.querySelector('.close')
        close.addEventListener('click', function () {
            clearInterval(timeId)
        })
  • 关闭定时器时无法调用timeId,这是因为他为局部变量。解决方法是定义定时器的全局变量

事件类型

鼠标篇

  • click ——鼠标点击
  • mouseenter—— 鼠标经过
  • mouseleave ——鼠标离开

轮播图点击切换

鼠标点击切换图片

const img = document.querySelector('.slider-wrapper img')
    const p = document.querySelector('.slider-footer p')
    const bg = document.querySelector('.slider-footer')
// 1.右侧按钮
    const next = document.querySelector('.next')
    // 信号量  控制播放器图片张数
    let i = 0
    // 1.2点击事件
    next.addEventListener('click', function () {
      i++
      if (i >= sliderData.length) {
        i = 0
      }
      // 调用函数
      toggle()
    })
// 2.左侧
    const prev = document.querySelector('.prev')
    // 1.2点击事件
    prev.addEventListener('click', function () {
      i--
      if (i < 0) {
        i = sliderData.length - 1
      }
      // 调用函数
      toggle()

    })
// 声明渲染函数
    function toggle() {
      img.src = sliderData[i].url
      p.innerHTML = sliderData[i].title
      bg.style.backgroundColor = sliderData[i].color
      // 更换小圆点
      document.querySelector('.slider-indicator .active').classList.remove('active')
      document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')
    }
  • 声明渲染函数缩减代码

自动播放图片;鼠标经过或离开,开启或关闭定时器

// 自动播放
    let timeId = setInterval(function () {
      // 利用JS调用点击事件 click()
      next.click()
    }, 1000)

// 鼠标经过大盒子,停止定时器
    const slider = document.querySelector('.slider')
    slider.addEventListener('mouseenter', function () {
      // 停止定时器
      clearInterval(timeId)
    })
// 鼠标离开大盒子,开启定时器
    slider.addEventListener('mouseleave', function () {
      // 开启定时器
      timeId = setInterval(function () {
        // 利用JS调用点击事件 click()
        next.click()
      }, 1000)
    })
  • 利用JS调用点击事件click()

焦点篇(表单获得光标)

  • focus ——获得焦点
  • blur ——失去焦点
<input type="text">
    <script>
        const input = document.querySelector('input')
        input.addEventListener('focus', function () {
            console.log('❤❤❤');
        })
        input.addEventListener('blur', function () {
            console.log('

标签:pink,function,const,Dom,笔记,querySelector,addEventListener,input,document
From: https://www.cnblogs.com/Z2201210269/p/17844663.html

相关文章

  • 并查集学习笔记
    简介这里引用OI-wiki上的内容:并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。顾名思义,并查集支持两种操作:合并(Union):合并两个元素所属集合(合并对应的树)查询(Find):查询某个元素所属集合(查询对应的树的根节点),......
  • 大学物理下笔记
    电荷和场关键方程说明方程Coulomb'slaw库仑定律\(\vec{\mathbf{F}}_{12}=\dfrac{1}{4\pi\varepsilon_0}\dfrac{q_1q_2}{r_{12}^2}\hat{\mathbf{r}}_{12}\)无限导线的电场\(\vec{\mathbf{E}}(z)=\dfrac{1}{4\pi\varepsilon_0}\dfrac{2\lambda}{z}\hat{\m......
  • 秦疆的Java课程笔记:33 流程控制 Scanner
    之前学习的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,可以获取用户的输入。java.util.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入。基本语法:Scanners=newScanner(System.in);通过Scanner类的nexr()与nextLine()方法获取输入的......
  • uniapp的tap和click事件获取原始dom元素
    uniapp支持tap和click事件必须在template模板中绑定tap事件会把event对象的target原生dom对象去除,替换为组件(未发现),文档上支持冒泡,还需测试要获取原始dom元素可在mounted周期自行addEventListener,方可读取 ......
  • 第十三章学习笔记
    第十三章学习笔记摘要本章论述了TCP/IP和网络编程,分为两个部分。第一部分论述了TCP/IP协议及其应用,具体包括TCP/IP栈、IP地址、主机名、DNS、IP数据包和路由器;介绍了TCP/P网络中的UDP和TCP协议、端口号和数据流;阐述了服务器-客户机计算模型和套接字编程接口;通过使用UDP和TC......
  • weblogic创建domain域
          ......
  • 信息安全系统设计与实现课程第十三章学习笔记
    一、知识点归纳1网络编程简介TCP/IP协议、UDP和TCP协议、服务器-客户机计算、HTTP和Web页面、动态Web页面的PHP和CGI编程2TCP/IP协议IPv432位地址IPv6128位地址TCP/IP协议顶层是使用TCP/IP的应用程序,用于登录到远程主机的ssh,用于交换电子邮件的mail、用于Web页面的ht......
  • 好久不见!新学习笔记-cc
    1.缩进tab代表4个字符2.if  elseif  elseif  elseif  ...  else3.在switch语句中如果输入出路要求以外的东西,可以加一个default(错误)printf()  swith(表达式){case(常量表达式)[——可以理解为scanf进去的东西]: printf();break;......
  • 「笔记」回文自动机
    目录写在前面结构构造复杂度证明模板题代码写在最后写在前面其实这东西学名叫EERTree,PalindromicTree,直译是回文树,但本质上是一类有限状态自动机所以也可以叫PalindromicAutomaton,因为我很喜欢自动机所以以下都叫它回文自动机。结构类似后缀自动机的,回文自动机(以下简称P......
  • 笔记
    PL/SQL导入sql文件:1.点击新建2.命令窗口3.@+回车4.选择导入的sql文件Createtabletest_tableasselect*fromdev_table----复制一个临时表(并且复制表里的数据)Createtabletest_tableasselect*fromdev_tablewhere1=2----复制一个临时表(不复制表里的数据)insertinto......