關於引用

一、 <!-- lang: html --> <!DOCTYPE HTML> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta charset="utf-8" /> <!-- lang: html --> <title>閉包演示</title> <!-- lang: html --> <style type="text/css"> <!-- lang: html --> p {background:gold;} <!-- lang: html --> </style> <!-- lang: html -->javascript

<!-- lang: html -->
    <script>
<!-- lang: html -->
       function init(){
<!-- lang: html -->
        var list=document.getElementsByTagName("p");
<!-- lang: html -->

<!-- lang: html -->
        for (var i=0;i<list.length;i++){
<!-- lang: html -->

<!-- lang: html -->
            list[i].onclick=function(){
<!-- lang: html -->
                var b=i;
<!-- lang: html -->
                return function(){
<!-- lang: html -->
                    alert(b);
<!-- lang: html -->
               };
<!-- lang: html -->
            }();
<!-- lang: html -->
        }
<!-- lang: html -->
       }
<!-- lang: html -->

<!-- lang: html -->
    </script>
<!-- lang: html -->
</head>
<!-- lang: html -->
<body onload="init();">
<!-- lang: html -->
<p>產品 0</p>
<!-- lang: html -->
<p>產品 1</p>
<!-- lang: html -->
<p>產品 2</p>
<!-- lang: html -->
<p>產品 3</p>
<!-- lang: html -->
<p>產品 4</p>
<!-- lang: html -->
</body>
<!-- lang: html -->
</html>

以前是點擊任何一條出現的都是5,下面這樣寫就會有些問題css

<!-- lang: html -->
<!DOCTYPE HTML> 
<!-- lang: html -->
<html> 
<!-- lang: html -->
<head> 
<!-- lang: html -->
<meta charset="utf-8" /> 
<!-- lang: html -->
<title>閉包演示</title> 
<!-- lang: html -->
<style type="text/css"> 
<!-- lang: html -->
    p {background:gold;}  
<!-- lang: html -->
</style> 
<!-- lang: html -->
<script type="text/javascript">   
<!-- lang: html -->
function init() {      
<!-- lang: html -->
    var pAry = document.getElementsByTagName("p");      
<!-- lang: html -->
    for( var i=0; i<pAry.length; i++ ) {      
<!-- lang: html -->
         pAry[i].onclick = function() {      
<!-- lang: html -->
         alert(i);      
<!-- lang: html -->
    }   
<!-- lang: html -->
  }  
<!-- lang: html -->
}  
<!-- lang: html -->
</script>   
<!-- lang: html -->
</head>   
<!-- lang: html -->
<body onload="init();">   
<!-- lang: html -->
<p>產品 0</p>   
<!-- lang: html -->
<p>產品 1</p>   
<!-- lang: html -->
<p>產品 2</p>   
<!-- lang: html -->
<p>產品 3</p>   
<!-- lang: html -->
<p>產品 4</p>   
<!-- lang: html -->
</body>   
<!-- lang: html -->
</html>

因此一方面新建變量b,返回一個引用,另外也應該return一個函數,若是不用return,循環執行的時候就會覆蓋前面的方法,最後獲得的仍是同一個引用。html

相關文章
相關標籤/搜索