首页 > 其他 > 详细

使用let实现循环小例子

时间:2020-01-30 14:46:11      阅读:57      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>JS</li>
            <li>JQ</li>
            <li>HTML5</li>
            <li>CSS3</li>
            <li>ES6</li>
        </ul>
    </body>
    <script>
        //使用let声明变量i,i就只在本轮循环中有效;如果使用var进行变量声明的话,就是全局变量,最后输出的就都是第8个
        var list = document.getElementsByTagName(li);
        for(let i = 0; i < list.length; i++){
            list[i].onmouseover = function(){
                str = list[i].innerText;
                this.innerText += 我是第 + (i+1) + 
                this.style.fontSize = 22px
                this.style.color = #f00
            }
            list[i].onmouseout = function(){
                this.style.color = black
                this.style.fontSize = 16px
                this.innerText = str;
            }
        }
        
    </script>
</html>

 

 

用 let 声明的变量只在当前作用域中起作用,循环一次{}中就会有一个 i 值,当点击元素之后,就会获取到当前环境中的 i 值,从而结果是对应的。

如果用 var 声明且不添加自执行的匿名函数的话,for循环会先执行完毕,当点击元素的时候才会执行绑定的点击事件,点击事件环境中没有 i 值,就会沿着作用域向上找,找到的就是for循环中的 i 值。这个时候for循环已经执行完毕了,i值为7,所以无论划过哪一个按钮,弹出结果都是11

 

使用let实现循环小例子

原文:https://www.cnblogs.com/rickdiculous/p/12242725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!