2013-02-26 33 views
0

有人可以告訴我爲什麼當我點擊名稱列表旁邊創建的[h] href時,它總是說選擇,我是5?循環創建的元素的值始終是5

var printDD = function(myhand, mydiv){ 
    var dtext = ""; 
    for(var i = 0; i < myhand.length; i++){ 
     dtext += '<a href="#" id="dd'+i+'">[s]</a>' + myhand[i] + ', '; 
    } 

    mydiv.html(dtext); 

    for(var i = 0; i < myhand.length; i++){ 
     $('#dd'+i).click(function(){ 
     selection = i; 
     console.log("sel: " + selection + " i: " + i); 
     }); 
    } 
} 
+0

它顯示的最後一個值 – 2013-02-26 12:11:04

+0

JamieJag,謝謝。解決了這個問題。如果你給你的評論一個答案,我會盡快接受它:) – CyanPrime 2013-02-26 12:16:29

回答

1

你想看看JavaScript closure inside loops – simple practical example。由於這個問題的答案說,你可以創建一個函數返回一個,也可以使用內聯函數調用的for循環,像這樣:

for(var i = 0; i < myhand.length; i++) { 
    $('#dd'+i).click((function(x) { 
     return function() { 
      selection = x; 
      console.log("sel: " + selection + " x: " + x); 
     } 
    }(i))); 
} 
0

因爲i的值是在點擊處理程序運行時確定的。所以它的值始終爲myhand.length - 1,這是您在for -loop後面離開i的狀態。