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>
  • 相关阅读:
    SQLSERVER 2008 编辑所有或者任意行
    在SQL2008和2012里面怎么让显示全部行和编辑 全部而不是200和1000
    sql server 提取汉字/数字/字母的方法
    [再寄小读者之数学篇](2014-05-12 曲线的弧长计算)
    [复变函数]第23堂课 6.2 用留数定理计算实积分 (续)
    [再寄小读者之数学篇](2014-04-23 行列式的导数)
    [再寄小读者之数学篇](2014-04-22 平方差公式在矩阵中的表达)
    康乐不风流之爱解题的pde灌水王张祖锦
    [复变函数]第22堂课 6.2 用留数定理计算实积分
    [Tex学习笔记]数学公式再次测试
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9030855.html
Copyright © 2011-2022 走看看