<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      淺談js for循環輸出i為同一值的問題(閉包解決)

      1、最近開發中遇到一個問題,為什么每次輸出都是5,而不是點擊每個p,就alert出對應的1,2,3,4,5。

      <html>  
      <head>  
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
      <title>閉包演示</title> 
      </head>  
      <body>  
      <p>1</p>  
      <p>2</p>  
      <p>3</p>  
      <p>4</p>  
      <p>5</p> 
      <script type="text/javascript">
      window.onload=function() {  
       var ps = document.getElementsByTagName("p");  
       for( var i=0; i<ps.length; i++ ) {  
         ps[i].onclick = function() {  
         alert(i);  
       }  
       }  
      }  
      </script> 
      </body>  
      </html>

      此時點擊任意p彈出的都是5

      出現原因:js事件處理器在線程空閑時間不會運行,導致最后運行的時候輸出的都是i最后的值,即:5

      2、解決辦法:使用閉包將變量i的值保護起來。

      //sava1:加一層閉包,i以函數參數形式傳遞給內層函數 
       for( var i=0; i<ps.length; i++ ) {  
       (function(arg){   
        ps[i].onclick = function() {   
         alert(arg);  
        };  
       })(i);//調用時參數  
       } 
       
       
      //save2:加一層閉包,i以局部變量形式傳遞給內存函數 
       for( var i=0; i<ps.length; i++ ) {  
       (function () {  
        var temp = i;//調用時局部變量  
        ps[i].onclick = function() {  
        alert(temp);  
        }  
       })();  
       }
       
       
      //save3:加一層閉包,返回一個函數作為響應事件(注意與3的細微區別) 
       for( var i=0; i<ps.length; i++ ) {  
       ps[i].onclick = function(arg) {  
        return function() {//返回一個函數  
        alert(arg);  
        }  
       }(i);  
       } 
       
       
      //save4:將變量 i 保存給在每個段落對象(p)上  
       for( var i=0; i<ps.length; i++ ) {  
        ps[i].i = i;  
        ps[i].onclick = function() {  
        alert(this.i);  
        }  
       }
       
       
      //save5:將變量 i 保存在匿名函數自身  
       for( var i=0; i<ps.length; i++ ) {  
       (ps[i].onclick = function() {  
        alert(arguments.callee.i);  
       }).i = i;  
       }   
      } 
       
       
      //save6:用Function實現,實際上每產生一個函數實例就會產生一個閉包
       for( var i=0; i<ps.length; i++ ) {  
        ps[i].onclick = new Function("alert(" + i + ");");//new一次就產生一個函數實例 
       } 
       
       
      //save7:用Function實現,注意與6的區別  
       for( var i=0; i<ps.length; i++ ) {  
         ps[i].onclick = Function('alert('+i+')'); 
       }

       

      posted @ 2017-11-08 17:24  博雅源  閱讀(13233)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 老熟女熟妇一区二区三区| 99久久亚洲综合精品成人网| 国产精品亚洲二区亚瑟| 亚洲一久久久久久久久| 中文午夜乱理片无码| 国产福利一区二区三区在线观看| 色欲AV无码一区二区人妻| 天天噜噜日日久久综合网| 高清无码在线视频| 四虎库影成人在线播放| 中文日产幕无线码一区中文| 中文字幕日韩国产精品| 99精品全国免费观看视频| 精品一区二区三区四区色| 国产精品中文字幕日韩| 亚洲午夜福利网在线观看 | 在线观看无码不卡av| 欧美xxxx做受欧美.88| 中文字幕亚洲综合第一页| 亚洲熟妇自偷自拍另类| 黄浦区| 色偷偷成人综合亚洲精品| 疯狂做受XXXX高潮国产| 上犹县| 国产在线观看网址不卡一区| 黄页网站在线观看免费视频| 99RE8这里有精品热视频| 熟女人妻视频| 色伦专区97中文字幕| 99福利一区二区视频| 成人性生交片无码免费看| 国产欧美日韩高清在线不卡| 二连浩特市| 国产精品亚洲精品日韩已满十八小| 久久精品这里热有精品| 白银市| 国产精品爽爽va在线观看网站| 欧美自拍另类欧美综合图片区| 色噜噜亚洲男人的天堂| 国产美女久久久亚洲综合| 亚洲精品第一国产综合精品|