1、事件类型
①、HTML事件
| 事件 | 说明 | 
| load | 当页面完全加载后在window上面触发,或当框架集加载完毕后在框架集上触发; | 
| unload | 当页面完全卸载后在window上面触发,或当框架集卸载后在框架集上触发; | 
| select | 当用户选择文本框(input或textarea)中的一个或多个字符触发; | 
| change | 当文本框(input或textarea)内容改变且失去焦点后触发; | 
| input | 输入; | 
| focus | 当页面或者元素获得焦点时在window及相关元素上面触发; | 
| blur | 当页面或元素失去焦点时在window及相关元素上触发; | 
| submit | 当用户点击提交按钮在<form>元素上触发; | 
| reset | 当用户点击重置按钮在<form>元素上触发; | 
| resize | 当窗口或框架的大小变化时在window或框架上触发; | 
| scroll | 当用户滚动带滚动条的元素时触发; | 
1、select
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.innerHTML="选择内容时候触发哈哈哈"
        b.addEventListener("select",()=>{
            b.style.backgroundColor="yellow"
            
        })
      
    </script>
</body>
</ht
2、change
搭配使用文本框(input或textarea)
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.innerHTML="当输入内容改变且失去焦点后触发;"
        b.addEventListener("change",()=>{
            b.style.backgroundColor="yellow"
            
        })
      
    </script>
</body>
</ht
3、input
一输入就触发
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.innerHTML="输入"
        b.addEventListener("input",()=>{
            b.style.backgroundColor="yellow"
            
        })
      
    </script>
</body>
</ht
4、focus与blur
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.addEventListener("focus",()=>{
            b.style.backgroundColor="aqua"
            b.innerHTML="获得焦点"
        })
        b.addEventListener("blur",()=>{
            b.style.backgroundColor="yellow"
            b.innerHTML="失去焦点"
        })
      
    </script>
</body>
</html>
5、 submit与reset
注意
获取元素对象一定是<form action=""> </form>标签,提交与重置按钮一定也要包含在<form>标签中
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            height: 100px;
            width: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <form action="">
        <input type="submit" value="提交">
        <input type="reset" value="重置">
        <div></div>
    </form>
    
    <script>
        const box=document.querySelector("div")
        const f = document.querySelector("form");
        f.addEventListener("submit",()=>{
            box.style.backgroundColor="yellow"
        })
        f.addEventListener("reset",()=>{
            box.style.backgroundColor="red"
        })
    </script>
</body>
</html>
6、resize尺寸大小事件
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            height: 100px;
            width: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
        <div></div>
    <script>
        const box=document.querySelector("div")
       window.addEventListener("resize",()=>{
        box.style.backgroundColor="green"
       })
    
    </script>
</body>
</html>
7、scroll滚动事件
scrollTop\scrollLeft 获取元素向上滚出的高度,向左滚出的宽度
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            height: 3000px;
            width: 2000px;
        }
    </style>
</head>
<body>
    <script>
        window.addEventListener("scroll", function () {
            console.log(document.documentElement.scrollTop)
            console.log(document.documentElement.scrollLeft)
        })
    </script>
</body>

②、键盘事件
键盘事件最好与输入相关的文本元素或者输入元素搭配使用
| 事件 | 说明 | 
| keydown | 当用户按下键盘上任意键时触发,如果按住不放,会重复触发; | 
| keyup | 当用户释放键盘上的键触发; | 
| keypress | 当按下并松开按键时触发 | 
1、keydown与keyup
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.addEventListener("keydown",()=>{
            b.style.backgroundColor="blue"
            b.style.color="white"
            console.log("按下")
        })
        b.addEventListener("keyup",()=>{
            b.style.backgroundColor="pink"
            console.log("松开")
        })
   
    </script>
</body>
</html>
2、keypress
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <script>
        let b=document.querySelector("textarea")
        b.addEventListener("keypress",()=>{
            b.style.backgroundColor="green"
            b.style.color="white"
            console.log("按下并松开")
        })
     
    </script>
</body>
</html>
③、鼠标事件
| 事件 | 说明 | 
| click | 单击鼠标按钮时触发 | 
| dblclick | 当用户双击主鼠标按钮时触发 | 
| mousedown | 当用户按下鼠标还未弹起时触发 | 
| mouseup | 当用户释放鼠标按钮时触发 | 
| mouseover | 当鼠标移到某个元素上方时触发 | 
| mouseout | 当鼠标移出某个元素上方时触发 | 
| mousemove | 当鼠标指针在元素上移动时触发 | 
| mouseenter | 在鼠标光标从元素外部首次移动至元素范围内触发,不参与冒泡 | 
| mouseleave | 鼠标移出 | 
1、click
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            height: 100px;
            width: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <button>点击</button>
    <div></div>
    <script>
        let box=document.querySelector("div")
        let btn=document.querySelector("button")
        btn.addEventListener("click",()=>{
            box.style.backgroundColor="yellow"
        })
    </script>
</body>
</html>
2、dblclick
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            height: 100px;
            width: 200px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <button>点击</button>
    <div></div>
    <script>
        let box=document.querySelector("div")
        let btn=document.querySelector("button")
        btn.addEventListener("dblclick",()=>{
            box.style.backgroundColor="yellow"
            box.innerHTML="双击鼠标触发"
        })
    </script>
</body>
</html>
3、mousedown与mouseup
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
       textarea{
           height: 200px;
           width: 300px;
           resize: both;
       }
    </style>
</head>
<body>
    <textarea cols="40" rows="20"></textarea>
    <script>
        let t=document.querySelector("textarea")
        t.addEventListener("mousedown",()=>{
            t.style.backgroundColor="yellow"
            t.innerHTML="当用户按下鼠标还未弹起时触发"
        })
        t.addEventListener("mouseup",()=>{
            t.style.backgroundColor="yellowgreen"
            t.innerHTML="当用户释放鼠标按钮时触发"
        })
    </script>
</body>
4、mouseenter与mouseleave
移进移出鼠标时,要点击才有效果
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
       .dad{
           height: 280px;
           width: 280px;
           background-color: green;
       }
       .son{
           height: 150px;
           width: 150px;
           background-color: yellow
       }
    </style>
</head>
<body>
    <div class="dad">
        <div class="son"></div>
    </div>
    <script>
        let t1=document.querySelector(".dad")
        let t2=document.querySelector(".son")
        t1.addEventListener("mouseenter",()=>{
            console.log("鼠标在元素上")
        })
        t1.addEventListener("mouseleave",()=>{
            console.log("鼠标移除元素外")
        })
    </script>
</body>
</html>
5、mouseover与mouseout
只要鼠标指针移入事件所绑定的元素或其子元素,都会触发该事件
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .dad{
           height: 280px;
           width: 280px;
           background-color: green;
       }
       .son{
           height: 150px;
           width: 150px;
           background-color: yellow
       }
    </style>
</head>
<body>
    <div class="dad">
        <div class="son"></div>
    </div>
    <script>
        let t1=document.querySelector(".dad")
        let t2=document.querySelector(".son")
        t1.addEventListener("mouseover",()=>{
            console.log("鼠标在元素上")
        })
        t1.addEventListener("mouseout",()=>{
            console.log("鼠标移除元素外")
        })
    </script>
</body>
</html>
6、mouseover ,mouseout ,mouseenter,mouseleave的区别
其实主要是mouseover与mouseout会引起冒泡,多次触发
7、mousemove
<head>
<style>
       div{
           height: 200px;
           width: 200px;
           background-color: rgb(136, 238, 136);
       }
       
    </style>
</head>
<body>
        <div></div>
    <script>
        let b=document.querySelector("div")
        b.addEventListener("mouseover",()=>{
            b.innerHTML="当鼠标指针在元素上移动时触发"
            b.style.backgroundColor="pink"
        })
   
    </script>
2、事件对象
- 在Javascript中发生事件时,都会产生一个事件对象event,这个对象中包含着所有与事件相关的信息
- 记录触发事件的所有记录,所有信息
//event.code键码值
对象.addEventListener("事件",(event或者e)=>{
事件对象操作
}
时间对象的使用可以让客户知道,在进行什么事件
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        const txt=document.querySelector("textarea")
        //记录关于事件的所有信息
        txt.addEventListener("keydown",(event)=>{
            console.log(event)
        } )
    </script>
</body>
</html>keydown事件, 在文本框输入按下键盘,控制台就出现了一次事件触发的具体信息

//事件由用户行为是否触发
isTrusted: true,
//按键标识符
key: '1',
按键标识符是表示键盘按钮的字符串,该属性的返回值可以是:
- 单个字母 (如 "a", "W", "4", "+" 或 "$")
- 多个字母 (如 "F1", "Enter", "HOME" 或 "CAPS LOCK")
//键码值
code: 'Digit1',
//返回按键在设备上的位置
location: 0
//用户的按键编码
keyCode: 49
//触发发生的元素容器
target: textarea
//事件类型
type: "keydown"
//以页面的左上角为原点。鼠标离浏览器可视区域左上角的距离,不随滚动条滚动而改变;
clientX: 135
clientY: 114
//鼠标位置相对于目标节点的位置
offsetX: 126
offsetY: 106
//以页面的左上角为原点。鼠标离浏览器可视区域左上角的距离,随滚动条滚动而改变;
pageX: 135
pageY: 114
//发生事件时,以显示器屏幕的左上角为原点,鼠标距离显示器屏幕左上角的坐标
screenX: 832
screenY: 239
//鼠标类型:小手
pointerType: "mouse"
- altKey:是否按下Alt键
- ctrlKey:是否按下Ctrl键
- shiftKey:是否按下Shift键
- metaKey:是否按下Meta键
<body>
    <textarea cols="30" rows="10"></textarea>
    <script>
        const txt=document.querySelector("textarea")
        txt.addEventListener("keydown",(event)=>{
            console.log(event.code)
            if (event.key=="Enter"){
                console.log("回车键")
            }
         
        }) 
    </script>
</body>利用事件,可以打印出你键盘敲下了什么

3、捕获与冒泡
Dom事件标准描述了事件传播的 3 个阶段:
- 捕获阶段(Capturing phase)—— 事件(从 Window)向下走近元素。
- 目标阶段(Target phase)—— 事件到达目标元素。
- 冒泡阶段(Bubbling phase)—— 事件从元素上开始冒泡。
可以用事件对象方法event.eventPhase()返回事件传播当前的阶段
冒泡:当一个事件发生在一个元素上,它会首先运行在该元素上的处理程序,然后运行其父元素上的处理程序,然后一直向上到其他祖先上的处理程序。
几乎所有事件都会冒泡。
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .grdad {
            width: 350px;
            height: 350px;
            background-color: aqua;
        }
        .dad {
            width: 250px;
            height:250px;
            background-color:yellow;
        }
        .son {
            width: 150px;
            height: 150px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="grdad">
        <div class="dad">
            <div class="son"></div>
        </div>
    </div>
    <script>
        const g = document.querySelector(".grdad")
        const d = document.querySelector(".dad")
        const s = document.querySelector(".son")
        g.addEventListener("click", function (e) {
            console.log("爷爷触发")
        })
        d.addEventListener("click", function (e) {
            console.log("爸爸触发")
        })
        s.addEventListener("click", function (e) {
            console.log("儿子触发")
        })
    </script>
</body>
</html>也就是说:点击 .son,事件首先通过祖先链向下到达元素(捕获阶段),然后到达目标(目标阶段),最后上升(冒泡阶段),在途中调用处理程序。


-  停止冒泡
用于停止冒泡的方法是
event.stopPropagation()。
  g.addEventListener("click", function (e) {
            console.log("爷爷触发")
           e.stopPropagation()
        })
        d.addEventListener("click", function (e) {
            console.log("爸爸触发")
           e.stopPropagation()
        })
        s.addEventListener("click", function (e) {
            console.log("儿子触发")
           e.stopPropagation()
        })
我们在使用时间监听的时候,第三个参数决定冒泡
第三个参数选项有两个可能的值:
- 如果为
false(默认值),则在冒泡阶段设置处理程序。- 如果为
true,则在捕获阶段设置处理程序。比如:
要是事件监听第三个参数是true,盒子触发顺序会从爷爷开始,到父亲,最后到儿子
 g.addEventListener("click", function (e) {
            console.log("爷爷触发")
        },true)
        d.addEventListener("click", function (e) {
            console.log("爸爸触发")
        },true)
        s.addEventListener("click", function (e) {
            console.log("儿子触发")
        },true)
4、组止表单提交
event.preventDefault() :阻止默认行为
元素对象.addEventListener("click", function (e或者event) {
e或者event.preventDefault()
})
元素对象.on事件 =(e或者event) =>{
e或者event.preventDefault()
})
 <form action="">
        <input type="text" name="name="佳人们你们好我作业还没写完555啊"">
        <button>提交</button>
    </form>
    <script>
        const btn = document.querySelector("button")
        btn.addEventListener("click", function () {
            console.log("点击")
    </script>点击提交,山面的路径栏发生了变化

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="">
        <input type="text" name="佳人们你们好我作业还没写完555啊" >
        <button>提交</button>
    </form>
    <script>
        const b = document.querySelector("button")
        b.addEventListener("click", function (e) {
            e.preventDefault()
        })
    </script>
</body>
</html>点击提交,山面的路径栏发生了变化

5、全选案例
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        table,th,td{
          border: 3px solid grey;
        }
        table {
            width: 100px;
            margin: 100px auto;
        }
        th {
            height: 25px;
        }
      
    </style>
</head>
<body>
    <table>
        <tr>
            <th>
                <input type="checkbox" class="a"> <span>全选</span>
            </th>
        </tr>
        <tr>
            <td>
                <input type="checkbox"  class="c">
            </td>
        </tr>
        <tr>
            <td>
                <input type="checkbox"  class="c">
            </td>
        </tr>
        <tr>
            <td>
                <input type="checkbox"  class="c">
            </td>
        </tr>
    </table>
    <script>
        const a = document.querySelector(".a")
        const c = document.querySelectorAll(".c")
        a.onclick=()=>{
            if (a.checked == true) {
                for (let i = 0; i < c.length; i++) {
                    c[i].checked = true
                }
            } else {
                for (let i = 0; i < c.length; i++) {
                    c[i].checked = false
                }
            }
        }
        for (let i = 0; i < c.length; i++) {
            c[i].onclick=()=>{
                let b = document.querySelectorAll(".c:checked")
                if (b.length == c.length) {
                    a.checked = true
                } else {
                    a.checked = false
                }
            }
        }
    </script>
</body>
</html>
6、事件委托
利用默认存在的冒泡,委托父级元素获取多数相同的元素对象
可以使用事件对象属性even.target---->返回触发此事件的的元素(事件的目标节点)
通俗一点讲,就是获取我们点击的对象
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
    </ul>
    <script>
        const ul=document.querySelector("ul")
        ul.onclick=(e)=>{
            e.target.style.backgroundColor="yellow"
        }
    </script>
</body>
</html>选中的变成黄色

- 若是父级元素里的子元素不都是相同的,有混入其他元素,但是只想让特定的子元素被选中,该怎么办呢?
- 使用tagName属性获取标签名 JavaScript提供了一个名为 tagName 的属性,可以用来获取元素的标签名。
- 首先选中父级,后面交给父级的事件监听的事件对象属性去选中
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
        <h3>佳人们你们好啊</h3>
    </ul>
    <script>
        const ul=document.querySelector("ul")
        ul.onclick=(e)=>{
            if(e.target.tagName ==="LI"){
                e.target.style.backgroundColor="blue"
            }
        }
    </script>
</body>

7、client.offset
假如你想了解一个元素的宽和高,但是一些元素的宽高是由内容撑起来的,于是该如何获取宽高
- 元素.clientWidth //获取元素自身的宽高,不包含边框、margin、滚动条
- 元素.clientHeight
- 元素.offsetWidth //获取元素自身的宽高,包含padding、border
- 元素.offsetHeight
首先来个行内块元素,不设宽度,设高度,让他的宽度被内容撑大
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div {
            display: inline-block;
            height: 100px;
            background-color: yellowgreen;
        }
    </style>
</head>
<body>
    <div>撸起袖子加油炫</div>
    <script>
        const b = document.querySelector("div")
        console.log(b.clientWidth)
        console.log(b.clientHeight)
    </script>
</body>
</html>即使不设宽度,盒子被撑大的宽度也显现出来

div {
display: inline-block;
/* width: 200px; */
height: 100px;
background-color: yellowgreen;
padding: 10px;
} 让全局属性增加内边距
我们发现,宽度增加了20px,.client会含有内边距

增加了边框与外边距我们发现,宽度还是20px ,说明.client不含有边框与外边距

将js的输出换成:
- console.log(b.offsetWidth)
- console.log(b.offsetHeight)
div有内边距与边框
div {
display: inline-block;
height: 100px;
background-color: yellowgreen;
border: 10px dashed green;
padding: 10px;
}
我们可以看到,宽度增加了40,所以.offset包含边框与内边距

8、获取元素位置
获取自己与有定位的父级的左、上角距离
元素对象.offsetTop
元素对象.offsetLeft
1、 一个简单的盒子
    <style>
        div {
           
            width: 200px;
            height: 200px;
            background-color: palevioletred;
        }
       
    </style>
<body>
    <div></div>
    <script>
        const b = document.querySelector("div")
        console.log(b.offsetTop)
        console.log(b.offsetLeft)
    </script>距离页面左上角距离都是8,因为body默认内边距8px

2、盒子加了10pxd外边距
距离顶部是10(上下外边距与边距合并,以外边距大的为准),距离坐标变成了18不,外边距与左右边距可以合并

3、加一个没有定位的父盒子
我们可以看到距离啥都没变

4、让父盒子有定位
距离左边是10px,因为外边距,距离顶部0px,因为上下的外边距塌陷

9、创建节点
委托父节点,首先创造节点,然后追加节点内容,父节点添加创造的新节点
追加节点:
// 父元素.appendChild(新的节点)
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <button>点击添加li</button>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ul>
    <script>
        const b = document.querySelector("button")
        const u = document.querySelector("ul")
        b.onclick=()=> {
           let lli=document.createElement("li")
           lli.innerHTML='我是新的li'
           u.appendChild(lli)  
        }
   </script>
</body>
</html>
除了在默认在后面添加,还可以在父级内选择下标插到想要插进的位置
父级元素.insertBefore(新的节点,追加的位置)
//追加节点改成这个
u.insertBefore(lli,u.children[1])

10、克隆节点
元素对象.cloneNode(bool) bool=true或者false
true表示会将后代节点一起克隆,默认false,文字也是节点
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>我是一个li</li>
    </ul>
    <script>
        const li =document.querySelector("ul li")
        const newl=li.cloneNode(true)
        console.log(newl)//如果克隆了,就从控制台输出
    </script>
</body>
</html>控制台得到输出

如果里面的布尔参数没有,默认为false,const newl=li.cloneNode()
获得的li没有文字

11、删除节点
父元素.removeChild(父元素,删除的位置)
//删除的操作必须依靠父元素
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    <script>
        const ul = document.querySelector("ul")
        ul.removeChild(ul.children[2])
    </script>
</body>
12、setTimeout()
主要用来指定函数后者某段代码,在多长时间之后执行 .会返回一个整数,作为定时器的编号,方便后期清除定时器
- setTimeout(function或者code,time)-->用户未对第二个参数进行传参,则默认是0
- 本质上是-->window.setTimeout(function或者code)
计时器编号与两种定义方式:
<script>
        let t = setTimeout(()=>{
            'console.log("哈哈哈佳人们好困")'
        }, 3000)
        console.log(t)
        let t1 = setTimeout('console.log("你们看到这句话的时候我早已身价百万!!")', 4000)
        console.log(t1)
</script>3秒,四秒后出来的东西,出现前会返回计时器编号

清除计时器 :
  <script>
let t = setTimeout('console.log("你们看到这句话的时候我早已身价百万!!")', 4000)
        console.log(t)
        clearTimeout(t)
   </script>清除计时器后,控制台除了返回一个定时器编号之外啥都没有出现

以函数为参数:
function t2() {
            console.log("好了烦躁冈抑云")
        }
window.setTimeout(t2)没有返回定时器编号

可以传参数:
setTimeout(function (a, b, c) {
            console.log(a + b*c)
        }, 3000, 3, 2, 3)
关于this
// 在全局作用域下,this关键字指向的是window
// 对象中的this,默认指向对象本身
// 箭头函数没有this的作用域
 <script>
setTimeout(function (a) {
             console.log(this)
        }, 3000, 3)
console.log(this)
 </script>
  x = 111
        let obj = {
            x: 2,
            sing: function () {
                console.log(this.x)
            }
        }
obj.sing()
setTimeout(obj.sing.bind(obj), 3000)
13、setInterva()
每个一段时间执行代码
// 每个一段时间执行一次代码
        let t= setInterval(function () {
            console.log("hello,setInterval")
           
        }, 1500)
        console.log(t)
可以传参:
let t2 = setInterval(function (a, b) {
console.log("喀喀喀")
console.log(a)
console.log(b)
}, 1000, 9, 5)
console.log(t2)
清除计时器:
clearInterval(t2)



















