2012-11-10 170 views
1

執行函數的循環。但是,以下工作 - 計數器在頁面上的圖像加載時計數。javascript:在for循環中調用函數

var progress = function() 
{ 
    for (var i = 0; i < slide.length; i++) 
    slide[i].onload = function(){ 
     actualprogress +=1, 
     loading.innerHTML = actualprogress 
    }; 
} 

而下面確實沒有工作。當我打開頁面時,櫃檯從頭開始顯示「[n]」(幻燈片的數量,例如「12」)。

var progress = function() 
{ 
    var action = function(){ 
    actualprogress +=1; 
    loading.innerHTML = actualprogress 
    } 
    for (var i = 0; i < slide.length; i++) 
    slide[i].onload = action(); 
} 

我想從for循環中調用一個函數,因爲我需要在函數中做其他更多的事情。爲什麼這不起作用?

+0

也想想使用縮進 – PeeHaa

+1

我現在做了,對此感到抱歉,並感謝您告訴我! – basbebe

回答

2

在第一個代碼中,您將函數指針分配給onload屬性。

在第二個代碼中,您將函數的返回值分配給onload屬性,即null

這些之間有巨大的差異。該括號是在第二代碼額外,後行動

onload = action() => onload = action 

乾杯

+0

謝謝!當然! – basbebe

+0

乾杯bro ,,,;) – Rikki

2

在第二個片段的最後一行,你調用該函數,而不是僅僅將其分配給slide[i].onload

只需將slide[i].onload = action();更改爲slide[i].onload = action;即可。