webapi

112 阅读2分钟

★ webapi

元素获取

​ document.querySelector ​ 获取满足条件的第一个元素 ​ 获取到的元素是dom元素,可以直接调用dom的api ​ 如果没有获取到,返回null ​ document.querySelectorAll ​ 获取满足条件的所有元素,返回一个伪数组 ​ 伪数组中成员都是dom元素 ​ 伪数组不能直接操作,必须遍历获取到里面的dom元素来进行操作

定时器

​ 作用:每隔一段时间重复做一个事情 ​ 语法:setInterval(处理函数,时间间隔) ​ setInterval会返回一个句柄(标识id) ​ clearInterval可以清除定时器,传递的参数是句柄

事件

​ 事件:用户操作所触发的行为 ​ 为用户操作添加一个事件监听,当用户真正进行某个操作的时候,就会触发某个行为 ​ 语法:dom.addEventListener(事件类型,处理函数) ​ 常见事件类型 ​ click:单击事件 ​ mouseenter:鼠标进入,当鼠标进入到该元素的范围就会自动触发 ​ mouseleave:鼠标离开,鼠标离开该元素的范围就会自动触发 ​ input:文本输入框内容变化所触发的事件,只要内容变化就会触发 ​ fcous:文本框聚焦事件,文本框获取焦点,焦点就是光标点 ​ change:文本框失焦事件,前提是内容改变了 ​ blur:文本框的失焦事件,只要失焦就会触发,不关注内容是否变化 ​ keydown:键按下时自动触发 ​ keyup:键松开时自动触发 ​ change:对于表单元素file而言,它 是用户选择好文件之后触发 ​ 排他思想 ​ 先清除其它兄弟元素的样式


关闭二维码案例:

  <div class="erweima">
    <img src="images/code.png" alt="" />
    <span> X </span>
  </div>
  <script>
    // 获取元素
    let qrcode = document.querySelector('.erweima')
    let span = document.querySelector('span')

    // 关闭按钮绑定单击事件
    span.addEventListener('click', function () {
      // 将二维码隐藏,通过样式可以实现
      qrcode.style.display = 'none'
    })

  </script> 


随机点名:

  <p>这里显示名字</p>
  <button>随机点名</button>

  <script>
    // 模拟数据
    let arr = ['1', '2', '3 '4', '5', '6',]
    // 获取元素
    let p = document.querySelector('p')
    let btn = document.querySelector('button')
    // 绑定单击事件
    btn.addEventListener('click', function () {
      // 生成索引,随机值
      let index = parseInt(Math.random() * arr.length)
      // 获取索引位置对应的名字
      let name = arr[index]
      // 删除当前索引名字
      arr.splice(index, 1)
      // 填充名字到指定元素
      p.innerText = name
      // 数组长度为零 禁用按钮
      if (arr.length === 0) {
        btn.disabled = true
      }
    })

  </script>


全选反选案例:

  <script>
    // 获取数据
    // 全选,文本,其他复选框
    let checkAll = document.querySelector('#checkAll')
    let all = document.querySelector('.all')
    let cks = document.querySelectorAll('.ck')

    // 单击绑定事件,全选复选框的状态,赋值给下面的所有复选框
    checkAll.addEventListener('click', function () {
      // 获取当前复选框经过一次点击之后的状态
      let state = checkAll.checked
      // 赋值给其他复选框,伪数组遍历
      for (let i = 0; i < cks.length; i++) {
        cks[i].checked = state
      }
      // cks.forEach(function (ele, index) {
      //   ele.checked = state  
      // })
      all.innerText = state ? '取消' : '全选'
    })

    // 全局标记
    for (let i = 0; i < cks.length; i++) {
      cks[i].addEventListener('click', function () {
        // 获取当前被选中的复选框的数量,与总数比较,如果数量等于所有复选框的总数,说明全部选中,反之全部取消
        // .ck:checked:找到匹配的元素,只会匹配被选中的复选框
        let count = document.querySelectorAll('.ck:checked').length
        if (count === cks.length) {
          checkAll.checked = true
          all.innerHTML = '取消'
        } else {
          checkAll.checked = false
          all.innerHTML = '全选'
        }
      })
    }
  </script>


购物车加减:

  <div>
    <input type="text" id="total" value="1" />
    <input type="button" value="+" id="add" />
    <input type="button" value="-" id="reduce" disabled=true />
  </div>
  <script>
    // 获取数据
    let add = document.querySelector('#add')
    let reduce = document.querySelector('#reduce')
    let total = document.querySelector('#total')
    // 绑定单击
    add.addEventListener('click', function () {
      // 获取输入框内数量
      let count = total.value
      // 自增
      count++
      // 重新赋值
      total.value = count
      // 自增导致一直大于一
      reduce.disabled = false
    })

    // 减
    reduce.addEventListener('click', function () {
      // 获取输入框内数量
      let count = total.value
      // 自增
      count--
      // 重新赋值
      total.value = count
      // 小于一禁用
      if (count == 1) {
        reduce.disabled = true
      }
    })
  </script>


表单元素属性操作

  <input type="text" class="password" /> <button class="changetype"></button>
  <br />

  <input type="checkbox" class="chkAll" />全选

  <div class="list">
    <input type="checkbox" />写代码 <input type="checkbox" />调bug
    <input type="checkbox" />写文档
  </div>

  <button class="getChioce">获取用户选择</button>

  <script>
    // 获取数据
    let password = document.querySelector('.password')

    let changetype = document.querySelector('.changetype')


    // 点击事件 密码文本框类型互换
    changetype.addEventListener('click', function () {
      // 判断输入框类型是否为password
      password.type = password.type === 'password' ? 'text' : 'password'
    })

    // 创建变量绑定标签类名
    let chkAll = document.querySelector('.chkAll')
    // 列表复选框
    let chks = document.querySelectorAll('.list input')
    // btn.addEventListener('click', function () {
    // let type = btn.type ===
    // })
    
    // 单击状态
    chkAll.addEventListener('click', function () {
      let state = chkAll.checked
      // 循环所有,设置checked状态
      for (let i = 0; i < chks.length; i++) {
        chks[i].checked = state
      }
    })
  </script>


定时器开关

  <button>获取验证码</button>
  <script>
    // setInterval()
    // 获取
    let btn = document.querySelector('button')

    // 单击事件
    btn.addEventListener('click', function () {
      let timeCount = 5
      // 开启定时器  timeId句柄 setInterval创建定时器
      let timeId = setInterval(function () {
        timeCount--
        btn.innerText = `倒计时${timeCount}秒`
        btn.disabled = true

        // 判断为0停止  clearInterval清除定时器
        if (timeCount == -1) {
          clearInterval(timeId)
          btn.disabled = false
          btn.innerText = '获取验证码'
        }
      }, 1000)
    })
  </script>


自动切换图片

  <div>
    <img src="./images/b01.jpg" alt="" />
    <p>第1张图片</p>
  </div>

  <script>
    // 获取元素
    let img = document.querySelector('img')
    let p = document.querySelector('p')
    // 图片索引
    let index = 1
    let timeId
    // 开启定时器
    function starttime() {
      timeId = setInterval(function () {
        // 索引自增
        index++
        // 判断为10时 索引变为1
        if (index == 10) {
          index = 1
        }
        // 生成图片路径
        let path = `./images/b0${index}.jpg`
        // 图片路径赋值img
        img.src = path
        // p描述
        p.innerText = `第${index}张图片`
      }, 100)
    }
    starttime()


    // 添加鼠标进入和离开效果
    let div = document.querySelector('div')/* 获取数据 */
    // 鼠标进入:停止定时器
    div.addEventListener('mouseenter', function () {
      clearInterval(timeId)
    })
    // 鼠标离开:停止定时器
    div.addEventListener('mouseleave', function () {
      starttime()
    })

  </script>