目前我正在使用RaphealJS庫,一切都項目似乎直到我遇到了一個問題,像這樣的好起來。的Javascript for循環
而是多次執行此操作的:
dolphinIcon[1].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(1);
});
dolphinIcon[2].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(2);
});
dolphinIcon[3].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(3);
});
爲什麼我就不能這樣做呢?
for(var i=0; i<dolphinIcon.length; i++){
dolphinIcon[i].click(function() {
this.attr({
stroke: 'black', 'stroke-width': 2,
fill: 'green'
});
alert(i);
});
}
我只是想這是存儲陣列中的每個圖標來提醒()其索引的數量,但是當我使用for循環,它時刻警惕()相同數量(數組的大小)無論我點擊哪個圖標。我應該如何解決這個問題?
這就是答案的最好的副本。我懷疑火箭已經回答了=) –
@凱文尼爾森:是的,這是一個常見問題。我已經回答了幾次。我更喜歡把閉包變成一個變量,它可以讓你的代碼更清潔。當我第一次開始使用JavaScript時,我遇到了同樣的問題:-P –
當我進入Raphael時,我第一次遇到了Opal所做的同樣的事情。我學會了愛內聯匿名函數,因爲通常不會,我只想用數組中的特定項的循環變量的值調用常用處理函數。除此之外,你的技術當然更清潔。 –