获取元素的方法与定时器和自动轮播

324 阅读1分钟
1、获取元素的方法
//1.document.querySelector
//语法:document.querySelector('选择器'),如果没有获取成功,就返回null
//只能获取到满足条件的第一个元素
    let a = document.querySelector('a')//获取第一个满足a标签的元
    let a = document.querySelector('.a')//获取第一个满足类名为a的元素
    let a = document.querySelector('#a')//获取第一个满足ID为a的元素
    
//2.document.querySelectorAll('选择器'),可以获取满足条件的所有元素,返回一个伪数组,就算没有获取到任何内容返回的也是一个空数组,不能够直接调用里面的数据,需要进行遍历每一项才能使用
    let a = document.querySelectorAll('a')
     a.forEach(function(v, i) {
         console.log(v, i)
       })
//3.获取其他元素的方法
document.getElementById()//获取满足id名的元素
document.getElementsByTagName()//获取满足标签名的元素
document.getElementsByClassName()//获取满足类名的元素
2.元素操作的方法修改文本
  <body>
    <div>
      <p>p元素</p>
      <span>span元素</span>
      <h1>h1</h1>
    </div>
    <script>
      // 如果innerText或者innerHTML没有赋值,那么就是取值
      let div = document.querySelector('div')
      // innerText:获取标签之间的文本内容,标签会被忽略
      console.log(div.innerText)
      // innerHTML:获取标签之间的完整结构
      console.log(div.innerHTML)
    </script>
  </body>
//使用innerText与innerHTML产生的内容会在元素内产生,覆盖元素里的其他文本内容
//innerText:为元素设置标签之间的文本内容,
//HTML:为元素设置标签之间的文本内容,如果内容中有html结构,会进行解析
3.随机点名的小案例
  <body>
    <button>随机抽取</button>
    <span>这是渲染位置</span>
    <script>
      let names = ['同学a', '同学b', '同学c', '同学d', '同学e']
      // 前置知识:为按钮绑定单击事件:单击按钮之后再进行处理
      let btn = document.querySelector('button')
      let span = document.querySelector('span')
      // 为btn添加单击事件的监听,当用户单击之后,就调用你传入的回调函数进行处理
      // click:单击
      btn.addEventListener('click', function() {
        // 单击按钮之后的业务处理
        // 生成一个随机索引
        // Math.random():生成一个0 ~ 1 之间的随机数,包含0,但是不包含1,乘以数组的长度,parseInt保留整数
        let index = parseInt(Math.random() * names.length)
        // 根据索引获取姓名
        let name = names[index]
        // 将姓名渲染到指定的元素中
        span.innerText = name
      })
    </script>
  </body>
4.给元素的style添加属性.
  <body>
    <input type="password" class="username" />
    <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 changeType = document.querySelector('changeType')
      let username = document.querySelector('.username')
      // 全选复选框
      let chkAll = document.querySelector('.chkAll')
      // 列表结构中的复选框
      let chks = document.querySelectorAll('.list input')

      // 为全选复选框添加单击事件
      chkAll.addEventListener('click', function() {
        // 获取当前全选复选框的状态值,选中为true,否则为false
        let state = chkAll.checked
        // 遍历下面的所有复选框,为每个设置checked状态值
        for (let i = 0; i < chks.length; i++) {
          chks[i].checked = state
        }
      })
      changeType.addEventListener('click', function() {
        // username.disabled = true
        // 获取当前输入框的type值
        // let type = username.type
        // console.log(type)
        // if (type === 'password') {
        //   // 修改为text
        //   username.type = 'text'
        // } else {
        //   // 修改为password
        //   username.type = 'password'
        // }
        // 根据当前type值进行type属性的设置
        // username.type = username.type === 'password' ? 'text' : 'password'
      })
    </script>
  </body>
5、定时器
//书写格式 定时器:每隔一段时间就重复做一个操作
       // 1.语法: setInterval(执行的函数,时间间隔)
       // 2.停止定时器:
       //  > let timeId = setinterval()
       // > clearInterval(timeId)


  // 获取btn按钮
  <body>
  <input type="button" value="倒计时5秒钟" />
  <script>
    // 获取btn按钮
    let btn = document.querySelector('input')
    //设置一个值为5
    let I = 5
    //单击事件,作为一个开始
    btn.addEventListener('click', function () {
        //句柄命名。创建一个定时器
      let timeID = setInterval(function () {
          //每次执行I--让I的值-1
        I--
         //单标签的内容修改为value值,修改里面的值
        btn.value = `倒计时${I}秒钟`
        //当倒计时开始的时候让按钮处于禁用状态
        btn.disabled = true
        if (I == -1//结束倒计时
          clearInterval(timeID)
            //重新赋值I让倒计时重新点击触发
          I = 5
          btn.disabled = false
          btn.value = "倒计时5秒钟"
        }
  //每次间隔为1000毫秒 也就是为1秒触发一次
      }, 1000)
  
  
    })
  </script>
</body>




6、轮播图
<body>
  <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 = setInterval(function () {
      // 计时器递增 index++
      index++
      // 因为没有后续的图片,需要让索引达到某个值返回1
      if (index == 10) {
        index = 1
      }
      console.log(index);
      // 设置图片路径
      img.src = `./images/b0${index}.jpg`
      // 给p标签设置内容
      p.innerText = `第${index}张图片`


    }, 1000)

    let div = document.querySelector('div')
    div.addEventListener('mouseenter', function () {
      clearInterval(timeID)
    })
    div.addEventListener('mouseleave', function () {
      setInterval(function () {
        // 计时器递增 index++
        index++
        // 因为没有后续的图片,需要让索引达到某个值返回1
        if (index == 10) {
          index = 1
        }
        console.log(index);
        // 设置图片路径
        img.src = `./images/b0${index}.jpg`
        // 给p标签设置内容
        p.innerText = `第${index}张图片`


      }, 1000)

    })
  </script>
</body>

1