2013-02-26 32 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的状态。