Web前端 Javascript笔记5

news2024/11/28 8:51:25

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 个阶段:

  1. 捕获阶段(Capturing phase)—— 事件(从 Window)向下走近元素。
  2. 目标阶段(Target phase)—— 事件到达目标元素。
  3. 冒泡阶段(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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1603621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在原生项目中集成flutter

两个前提条件&#xff1a; 从flutter v1.17版本开始&#xff0c;flutter module仅支持AndroidX的应用在release模式下flutter仅支持一下架构&#xff1a;x84_64、armeabi-v7a、arm6f4-v8a,不支持mips和x86;所以引入flutter前需要在app/build.gradle下配置flutter支持的架构 a…

springSecurity用户认证和授权

一&#xff0c;框架介绍 Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。一般来说&#xff0c;Web 应用的安全性包括用户认证&#xff08;Authentication&#xff09;和用户授权&am…

EelasticSearch的docker安装-----》es客户端使用!!!

1.Docker安装 docker run -d --name es7 -e ES_JAVA_POTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -v /opt/es7/data/:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.14.02.客户端UI工具&#xff0c;Edge浏览器…

量子密钥分发系统设计与实现(一):系统基本架构讨论

经过一段时间讨论&#xff0c;我们了解到量子密钥分发设备是当前量子保密通信系统的基础。从本文开始&#xff0c;我将开启量子密钥分发系统设计与实现系列&#xff0c;详细讨论量子密钥分发设备如何从0到1的搭建。 1.QKD系统总体讨论 QKD系统的核心功能就是为通信双方提供理论…

Unity之XR Interaction Toolkit如何在VR中实现渐变黑屏效果

前言 做VR的时候,有时会有跳转场景,切换位置,切换环境,切换进度等等需求,此时相机的画面如果不切换个黑屏,总会感觉很突兀。刚好Unity的XR Interaction Toolkit插件在2.5.x版本,出了一个TunnelingVignette的效果,我们今天就来分析一下他是如何使用的,然后我们自己再来…

ABAP - 三代增强 BADI

SAP ERP提供了大量的标准功能&#xff0c;但是用户的需求是多种多样的&#xff0c;如何使SAP的标准功能适应用户的需求就变得非常重要&#xff0c;SAP Enhancement技术允许我们对SAP的标准功能进行扩展&#xff0c;以满足用户的个性化需求&#xff1b;SAP保证所有的BADI向上兼容…

Stable Diffusion之Ubuntu下部署

1、安装conda环境 conda create -n webui python3.10.6 2、激活环境 每次使用都要激活 conda activate webui 注意开始位置的变换 关闭环境 conda deactivate webui 3、离线下载SD 代码 https://github.com/AUTOMATIC1111/stable-diffusion-webui https://github.com/Stabilit…

小红书app缓存清除

1.背景 小伙伴们&#xff0c;手机app运行产生的缓存在不断侵占着我们的收集的内存&#xff0c;运行个半年发现内存不足20%。其实很多情况我们通过各个手机自带的缓存清除功能&#xff0c;就可以把app运行过程中产生的内存清除掉&#xff0c;节省我们不少的空间。想一想手机上a…

【FreeRTOS】使用CubeMX快速移植FreeRTOS工程到蓝桥杯开发板(STM32G431RBT6)

使用CubeMX快速创建FreeRTOS工程到蓝桥杯开发板&#xff08;STM32G431RBT6&#xff09; CubeMX配置CubeMX基础工程的配置☆FreeRTOS相关配置FreeRTOS配置选项卡的解释 软件工程架构与程序设计小综合&#xff1a;任务的创建删除、挂起与恢复设计cubexMX配置创建任务软件程序设计…

前端服务请求跨域被拦截,Java后端Springboot服务解决办法

跨域问题 跨域前端遇到的问题&#xff1a; Access to XMLHttpRequest at ‘http://www.xxx.xxxx/api/x/d/xc’ from origin ‘http://127.0.0.1:3000’ has been blocked by cors policy: No ‘Access-Contorl-Allow-Origin’ header is present on the requested resource. …

8.Jetson AGX Orin Ubuntu20.04 gRPC编译安装

Jetson AGX Orin Ubuntu20.04 gRPC编译安装 一、CMake版本检查 grpc编译cmake要求最低版本为3.15。首先&#xff0c;cmake -version 查看当前cmake版本&#xff0c;如果低于3.15&#xff0c;按照以下步骤进行安装。 1.1 卸载已经安装的旧版的CMake sudo apt-get autoremove…

Golang插件系统实现

插件可以在解耦的基础上灵活扩展应用功能&#xff0c;本文介绍了如何基于Golang标准库实现插件功能&#xff0c;帮助我们构建更灵活可扩展的应用。原文: Plugins with Go 什么是插件 简单来说&#xff0c;插件就是可以被其他软件加载的软件&#xff0c;通常用于扩展应用程序的功…

嵌入式学习56-ARM5(linux驱动启动程序)

知识零碎&#xff1a; bootm&#xff1a; 启动内核同时给内核传参 …

VAR:自回归家族文生图新SOTA,ImageNet上超越Diffusion与DiTs

一、背景&#xff1a; 在人工智能领域&#xff0c;尤其是计算机视觉和自然语言处理中&#xff0c;自回归&#xff08;AR&#xff09;大型模型&#xff08;如GPT系列&#xff09;因其强大的生成能力和在多种任务上的通用性而受到广泛关注。这些模型通过自监督学习策略&#xff0…

Android 性能优化(七):APK安装包体积优化

包体积优化重要性 移动 App 特别关注投放转化率指标&#xff0c;而 App 包体积是影响用户新增的重要因素&#xff0c;而 App 的包体积又是影响投放转化率的重要因素。 Google 2016 年公布的研究报告显示&#xff0c;包体积每上升 6MB 就会带来下载转化率降低 1%&#xff0c; …

获取公募基金净值【数据分析系列博文】

摘要 从指定网址获取公募基金净值数据&#xff0c;快速解析并存储数据。 &#xff08;该博文针对自由学习者获取数据&#xff1b;而在投顾、基金、证券等公司&#xff0c;通常有Wind、聚源、通联等厂商采购的数据&#xff09; 导入所需的库&#xff1a;代码导入了一些常用的库…

CSS3 伪元素与伪类选择器区别、详解与应用实例

伪元素与伪类两者都是通过在选择器后附加一个特定的关键字来定义&#xff0c;遵循相似的语法规则&#xff0c;并在 CSS 规则块中设置相应的样式。伪元素 能够通过 content 属性添加或替换内容。例如&#xff0c;:before 和 :after 可以插入文本、图像或其他生成的内容。伪类 仅…

Go 单元测试之Mysql数据库集成测试

文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作&#xff0c;并且可以验证 SQL 语句的执行情况&#xff0c;非常适合用于单元测试…

数据赋能(58)——要求:数据赋能实施部门能力

“要求&#xff1a;数据赋能实施部门能力”是作为标准的参考内容编写的。 在实施数据赋能中&#xff0c;数据赋能实施部门的能力体现在多个方面&#xff0c;关键能力如下图所示。 在实施数据赋能的过程中&#xff0c;数据赋能实施部门应具备的关键能力如下。 理性思维与逻辑分…

ES源码四:网络通信层流程

听说ES网络层很难&#xff1f;今天来卷它&#x1f604; 前言 ES网络层比较复杂&#xff0c;分为两个部分&#xff1a; 基于HTTP协议的REST服务端基于TCP实现的PRC框架 插件化设计的网络层模块&#xff08;NetworkModule&#xff09; 入口还是上一章的创建Node构造方法的地方…