2012-05-21 88 views
0

將for循環的「i」傳遞給另一個函數的方式是什麼?
我需要一個點擊功能來改變< ul的左邊位置,但是在每次點擊時,它必須根據它的索引位置使用存儲在數組中的值。將for循環的索引傳遞給另一個函數

var currentPosition = new Array(); 

// store some values in an array 
function slide() { 
    for (j = 0; j < 5; j++) { 
    var positions = 100 * j; 
    currentPosition.push(positions); 
    function moveIt(j); 
    } 
} 

function moveIt(j) { 
    $(document).on('click','#left', function() { 
    $('ul').animate({'left': currentPosition[j] + 'px'}); 
    }) 
} 

slide(); 

http://jsfiddle.net/cadence96/gTQ3M/1/

+0

我沒有看到'我',但我看到一個'j'。你能澄清一下嗎?你說你需要通過'我',但沒有。 – jmort253

+0

沒關係,@ gdoron剛剛回答了你的問題,(和我的)我認爲:) – jmort253

+0

不好意思,我正在把我的代碼移到小提琴上,並且沒有用j代替我。 –

回答

3
function slide() { 
    for (var j = 0; j < 5; j++) { 
    var positions = 100 * j; 
    currentPosition.push(positions); 
    //function moveIt(j); <=================== delete this. 
     moveIt(j); //<======================== Change to this. 
    } 
} 

Yours updated fiddle

+2

在'''j = 0'''前加上一個var來避免創建一個全局變量。 –

+0

@TJVanToll - 我認爲他只是解決了這個問題,所以你可以刪除downvote,考慮到這是一個很棒的答案。 +1 – jmort253

+0

@ jmort253。 Actullay,我不認爲他真的需要在這裏關閉...... – gdoron

4

只需卸下function關鍵字在循環的最後一行

var positions = 100 * j; 
currentPosition.push(positions); 
function moveIt(j); 

像這樣

var positions = 100 * j; 
currentPosition.push(positions); 
moveIt(j); 
+1

彼得 - 我沒有降低這一點,但我認爲他問的是如何鎖定在他註冊moveIt函數的事件中的'j'。 'j'不斷變化,並且在事件發生時不會相同,除非它在關閉時被安全地鎖定...除非我錯過了某些東西... – jmort253

+0

實際上,錯誤出現在他的小提琴中,這似乎是做了同樣的事情gdoron的答案正在做。所以+1先生。 – jmort253

相關問題