zoukankan      html  css  js  c++  java
  • 点击按钮后弹出相应的颜色值

    点击按钮后弹出相应的颜色值

    一、总结

    1、都是立即执行的匿名函数:()()

    二、点击按钮后弹出相应的颜色值

    练习2:

    • 实例描述:

      点击按钮后弹出相应的颜色值

    • 案例要点:

      通过这个例子加深对循环语句中匿名函数的理解。

    三、代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>练习02</title>
     6     <style type="text/css">
     7         div{
     8             width: 150px;
     9             height: 150px;
    10             font-size: 28px;
    11             display: inline-block;
    12         } 
    13         #green{background:green;}
    14         #blue{background:blue;}
    15         #red{background:red;}
    16         #orange{background:orange;}
    17     </style>
    18 </head>
    19 <body onload="test4();"> 
    20     <div id="green">green</div>
    21     <div id="blue">blue</div>
    22     <div id="red">red</div>
    23     <div id="orange">orange</div>
    24 </div> 
    25 <script type="text/javascript"> 
    26     function test1() {  //1、这样的方式得不到效果,匿名函数里面的循环变量都是在i循环完的4
    27         var colorArr=['green','blue','red','orange']
    28         var divArr= document.getElementsByTagName("div"); 
    29             for( var i=0; i<4; i++ ) { 
    30                 divArr[i].onclick = function() { 
    31                 alert(colorArr[i-1]); 
    32             } 
    33         } 
    34     } 
    35 //加一层闭包,i 以函数参数形式传递给内层函数 
    36     function test2() { 
    37         var colorArr=['green','blue','red','orange']
    38         var divArr= document.getElementsByTagName("div"); 
    39             for( var i=0; i<4; i++ ) { 
    40                 (function(i){divArr[i].onclick=function(){
    41                         alert(colorArr[i]);
    42                     }
    43                 })(i) 
    44 
    45             } 
    46         }  
    47 //加一层闭包,i 以局部变量形式传递给内层函数 
    48     function test3() { 
    49         var colorArr=['green','blue','red','orange']
    50         var divArr= document.getElementsByTagName("div"); 
    51             for( var i=0; i<4; i++ ) { 
    52                 (function(){
    53                     var c=i;
    54                     divArr[i].onclick=function(){
    55                         alert(colorArr[c]); // 4、这个c可是会常驻内存的,因为这层匿名函数用了外层匿名函数的变量
    56                     }
    57                 })() 
    58 
    59             } 
    60         }
    61 //加一层闭包,返回一个函数作为响应事件
    62      function test4() { 
    63         var colorArr=['green','blue','red','orange']
    64         var divArr= document.getElementsByTagName("div"); 
    65             for( var i=0; i<4; i++ ) { 
    66                     divArr[i].onclick=(function(c){
    67                         return function(){
    68                             alert(colorArr[c]); //5、这个c也是会常驻内存的,因为这层匿名函数用了上一层匿名函数的变量
    69                         }
    70                     })(i) 
    71             } 
    72         }
    73 
    74 </script> 
    75     
    76 </body>
    77 </html>
  • 相关阅读:
    android 7.0带来的
    转 android 侧滑实现
    (转)30道面试题
    【转】关于手机号注册的一些思考
    一个美国人对"智能制造"的思考!
    【转】社区O2O的增量与存量,机会在哪?
    【转】30岁之前打好基础,无惧职场“35岁现象”! | 人力资源心理学
    Linux 复制、移动覆盖文件不提示
    使用DDMS测试安卓手机APP的性能(android)
    【转】测试思考——测试人员需要具备哪些素质?
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9030855.html
Copyright © 2011-2022 走看看