zoukankan      html  css  js  c++  java
  • js闭包for循环总是只执行最后一个值得解决方法

    <style>
    li{
    list-style: none;40px;height: 40px;text-align:center;line-height: 40px;cursor: pointer;
    }
    </style>

    html代码:
    <ul id="uls">
        <li style="background:#aaa">0</li>
        <li style="background:#bbb">1</li>
        <li style="background:#ccc">2</li>
        <li style="background:#ddd">3</li>
    </ul>


    //这样写的话每次弹出都是最后一个值
    // var lis=document.getElementsByTagName('li');
    // for (var i = 0; i <=lis.length; i++) {
    // lis[i].onclick = function(){
    // alert(i);
    // }
    // };

    使用闭包方法解决

    //解决方法一:
    var lis=document.getElementsByTagName('li');
    for (var i = 0; i <=lis.length; i++) {
        (function(i){
            lis[i].onclick = function(){
                alert(i);
            }
        })(i);
    };

    //解决方法二:
    var lis=document.getElementsByTagName('li');
    for (var i = 0; i <=lis.length; i++) {
        lis[i].onclick = function(n){
            return function(){
                alert(n);
            }
        }(i);
    };

    //解决方法三(jquery):
    $("ul li").click(function(){
        var index = $(this).index(); //获取索引下标 也从0开始
        alert($(this).html());
    });

  • 相关阅读:
    react之redux的使用笔记
    react之jsx的使用
    react之第一个组件的定义及使用
    npm
    webpack热加载
    react使用笔记及生命周期
    移动开发的常见问题
    javascript常用的方法
    cordova local notification plugin
    jqmobi 转换语言
  • 原文地址:https://www.cnblogs.com/chuyi-123/p/6249624.html
Copyright © 2011-2022 走看看