有关事件(e)的一些小知识

154 阅读3分钟

const 声明一个常量变量

常量声明:const

  • const 属于常量的一种声明方式:

意味着不能再次修改

const arr = []

arr.push("皮皮")

//这不算是修改,只改变了堆中的值,

栈中的地址并没有改变

const arr = []

arr = “你好”

//报错,是开辟了新的栈空间

栈中的地址改变了

对于引用类对象数据:

obj.name = "xx"

不算修改对象

const 定义后不能修改,

let 定义后可重新赋值

判断const是否被改变

判断是不是修改 看 它有没有重新写 = 号 或者自增或者自减

const 声明的变量不能被修改

1 普通类型的数据 直接写 = ,表示修改数 报错

2 复杂类型的数据 直接写 = ,表示修改 报错

3 复杂类型的数据 写 = 相当与重新开辟新空间

能使用const 就不用 let

你不知道 什么时候用const

学习老师的代码

直接使用let

image-20220411210554408

事件对象

定义:什么是事件对象:

事件发生时,就包含的信息

怎么样获取事件对象:

一般在事件处理函数的第一个形参(通常用,e,event,ev)

等表示。

鼠标的坐标的信息的获取 :

方式一:clientX clientY

获取鼠标到浏览器的左上角的位置

document.body.addEventListener('click',function(e){

console.log(e.clientX,e.clientY)}) // 距离屏幕x轴值 距离屏幕Y轴值

注意:都是不带单位 如: 500 500

方式二:offsetX offsetY

获取鼠标到绑定事件的盒子的左上角的距离

div.addEventListener('click',function(e){

console.log(e.clientX,e.clientY)}) // 距离div元素x轴值 距离div元素Y轴值

注意:都是不带单位 如: 500 500

键盘按键事件:

keydown 鼠标按下时触发

window.addEventListener("keydown",funtion(e){

console.log(e.key)}) //可以打印 出按下的 哪个键

keyup 鼠标抬起来触发

document.body.addEventListener("keyup",funtion(e){

console.log(e.key)}) //可以打印 出按下的 哪个键 如:按Enter 打印 “”Enter“”

点击发布按键事件案例

用到了 keydown 或者 keyup 事件 利用 e.key判断出Enter按键 trim()去除空格 来判断

点击发布按键事件:

index.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>点击发布按钮</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
        .bigBox{
            left: 50%;
            width: 250px;
            position: relative;
        }
        button{
            position: absolute;
            left: 200px;
            bottom: -20px;
        }
        ul{
            width: 100%;
            /* background-color: pink; */
            top: 200px;
            position: absolute;
            padding-bottom:100px ;
           
        }
        li{
            padding: 5px;
            color: aqua;
            list-style: none;
            border-bottom: 1px solid pink;
        }
    </style>
</head>
<body>
    <div class="bigBox">
        <textarea name="" id="" cols="30" rows="10" class="text"></textarea>
        <button>发布</button>
        <ul class="father">
            <!-- <li>1</li> -->
        </ul>
    </div>
    <script src="./index.js"></script>
</body>
</html>

index.js页面:

/* 
1,点击发布按钮
2,把文本域中的文本 显示在下列列表中
3,用户在文本域中按下回车键 也能实现 发布按钮 功能
分析:
    用到可  文本域的 keydown 获取 keyup 事件
    获取具体按键 e.keyCode  等于具体某个按键
*/
const father = document.querySelector('.bigBox .father');
const btn = document.querySelector('.bigBox button');
const text = document.querySelector('.bigBox .text');
function createLi() {
  if (!text.value.trim()) {
    //去除空格
    return;
  }
  const li = document.createElement('li');
  li.innerHTML = text.value.trim(); //去除空格
  father.appendChild(li);
  text.value = ''; //清空
}
document.body.addEventListener('click', function () {
  createLi();
});
text.addEventListener('keyup', function (e) {
  // console.log('e  ----->  ', e);
  // if(e.keyCode === 13){
  //     let li = document.createElement('li')
  // li.innerHTML = text.value
  // createLi()
  // }
  console.log('e.key  ----->  ', e.key); //输出按下的键
  if (text.value === '') {
    console.log('"不能输出空格"  ----->  ', '不能输出空格');
    return;
  }
  if (e.key === 'Enter') {
    console.log('e.key  ----->  ', e.key); //输出按下的键
    const li = document.createElement('li');
    li.innerHTML = text.value;
    createLi();
    // e.preventDefault()    //阻止默认换行效果
    // 解决按下回车键 文本换行的效果
    // 文本域的默认行为
    // 处理 标签的默认行为
    // return false
    // 阻止文本域默认换行的效果  -----e.preventDefaulte() 阻止默认行为
  }
});

image-20220411210613215

自动调用按键事件

let btn = document.Element('button')
btn.addEventListener('click',function(){
    console.log('123')
})
setInteval(function(){
    btn.click()   //1秒钟调用一次点击事件,打印一次
},1000)

去除左右两次的空格

元素.value.trim() 去除两侧空格

image-20220411180721699

轮播图案例

主要用到 索引下标保存 来在定时器里循环

index.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>
        .box {
            width: 810px;
        }
        .box img{
            width: 100%;
        }
    </style>
</head>
<body>
    <h1>美女画廊</h1>
   <div class="smallPic">
    <!-- <img src="./3.3/1-small.jpg" alt="">
    <img src="./3.3/2-small.jpg" alt="">
    <img src="./3.3/3-small.jpg" alt="">
    <img src="./3.3/4-small.jpg" alt=""> -->
   </div>
    <div class="box">
        <!-- <img src="./3.3/1.jpg" alt=""> -->
        <img src="./3.3/placeholder.png" alt="">
    </div>
    <h3>选中美女</h3>
    <script src="./index.js"></script>
</body>
</html>

index.js

let list = [
    {small:"./3.3/1-small.jpg",big:"./3.3/1.jpg",title:"第一个美女"},
    {small:"./3.3/2-small.jpg",big:"./3.3/2.jpg",title:"第二个美女"},
    {small:"./3.3/3-small.jpg",big:"./3.3/3.jpg",title:"第三个美女"},
    {small:"./3.3/4-small.jpg",big:"./3.3/4.jpg",title:"第四个美女"}
]
let smallPic = document.querySelector('.smallPic')
let big = document.querySelector('.box img')
let h3 = document.querySelector('h3')
function product(){
    let html = ""
    for(let i =0;i<list.length;i++){
        html += `<img src="${list[i].small}" alt="">`
    }
    smallPic.innerHTML = html
    big.src = list[0].small
    clickSmall()
}
product()
function clickSmall(){
    let smalls = document.querySelectorAll('.smallPic img')
    for(let i =0;i<smalls.length;i++){
        smalls[i].addEventListener('click',function(){
            big.src = list[i].small
            h3.innerHTML = list[i].title
            index = i
        })
    }
}
let index = 0
setInterval(() => {
    index++
    if(index===list.length){
        index=0
    }
    big.src = list[index].small
    h3.innerHTML = list[index].title
}, 1000);

image-20220411210650817