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());
    });

  • 相关阅读:
    PL/SQL详细介绍
    Linux服务器性能评估(转)
    oracle命令(转)
    Makefile介绍(转)
    delphi 指针
    浏览器的工作原理(转)
    高性能分布式计算与存储系统设计概要(上)(转)
    HTTP协议详解(转)
    MySQL性能优化(转)
    redhat 6.2安装telnet服务
  • 原文地址:https://www.cnblogs.com/chuyi-123/p/6249624.html
Copyright © 2011-2022 走看看