zoukankan      html  css  js  c++  java
  • for循环数组i的正确取值

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    *{ margin:0; padding:0;}
    ul{ list-style:none; overflow:hidden}
    li{ 200px; height:50px; overflow:hidden; border:1px solid;}
    </style>
    </head>
    
    <body>
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <script>
    var Ary = document.getElementsByTagName("li");
    function init(){
        for(var i = 0; i < Ary.length; i++){
            Ary[i].onclick = function(){
                console.log(i);
            };
        };
    };
    
    //将变量i保存给每个段落对象li上 Ary[i].i = i
    function solve(){
        for(var i = 0; i < Ary.length; i++){
            Ary[i].i = i;
            Ary[i].onclick = function(){
                console.log(this.i);
            };
        };
    };
    
    //将变量i保存在匿名函数自身(function).i = i
    function solve2(){
        for(var i = 0; i < Ary.length; i++){
            (Ary[i].onclick = function(){
                console.log(arguments.callee.i);
            }).i = i;
        };
    };
    
    //闭包,i以函数参数形式传递给内层函数(function(n){})(i)
    function solve3(){
        for(var i = 0; i < Ary.length; i++){
            (function(n){
                Ary[i].onclick = function(){
                    console.log(n);
                };
            })(i);
        };
    };
    
    //闭包,i以局部变量形式传递给内存函数
    function solve4(){
        for(var i = 0; i < Ary.length; i++){
            (function(){
                var tmp = i;
                Ary[i].onclick = function(){
                    console.log(tmp);
                };
            })();
        };
    };
    
    //闭包,返回一个函数作为响应事件
    function solve5(){
        for(var i = 0; i < Ary.length; i++){
            Ary[i].onclick = function(n){
                return function(){
                    console.log(n);
                };
            }(i);
        };
    };
    
    //用Function实现,实际上每产生一个函数实例就会产生一个闭包
    function solve6(){
        for(var i = 0; i < Ary.length; i++){
            Ary[i].onclick = new Function("console.log(" + i + ")");
        };
    };
    
    function solve7(){
        for(var i = 0; i < Ary.length; i++){
            Ary[i].onclick = Function("console.log(" + i + ")");
        };
    };
    
    window.onload = solve7;
    </script>
    </body>
    </html>
  • 相关阅读:
    0309. Best Time to Buy and Sell Stock with Cooldown (M)
    0621. Task Scheduler (M)
    0106. Construct Binary Tree from Inorder and Postorder Traversal (M)
    0258. Add Digits (E)
    0154. Find Minimum in Rotated Sorted Array II (H)
    0797. All Paths From Source to Target (M)
    0260. Single Number III (M)
    0072. Edit Distance (H)
    0103. Binary Tree Zigzag Level Order Traversal (M)
    0312. Burst Balloons (H)
  • 原文地址:https://www.cnblogs.com/archrjoe/p/2766598.html
Copyright © 2011-2022 走看看