2011-11-02 172 views
0

我遇到了javascript for循環的問題。我將一個數組的元素相加,但由於某種原因,我的循環會在第一個條目中添加兩次!在這裏有一個類似的話題(http://stackoverflow.com/questions/3121670/for-loop-repeats-first-loop-twice),但作者沒有詳細解釋他的決議,只是它是「事端愚蠢」他做到了。誰能告訴我我在做什麼愚蠢?For循環重複第一次迭代兩次

for(j=0;j<ARRAY.length;j++) 
{TOTAL += ARRAY[j];} 

輸出在HTML表中使用,它是正確顯示,它只是增加了一倍第一個條目這是個問題!

任何幫助將不勝感激。

+0

初始化了'TOTAL'嗎? – 2011-11-02 17:13:26

+0

在這種情況下,它不應該有任何區別,但你應該確保「j」是用'var'聲明的。你的循環肯定不會重複第一次迭代。 – Pointy

+3

@Karl Major:也通過你之前的一些問題並接受對你有幫助的回答 – PeeHaa

回答

0

感謝您的幫助。由於我原來的方法達到了死衚衕,我研究了使用函數來實現這個技巧。以下作品:

Array.prototype.sum = function() { 
for (var j = 0, L = this.length, sum = 0; j < L; sum += this[j++]); 
return sum; 
} 

然後我創建我的html表時調用ARRAY.sum()。

我發現上面的解決方案在http://www.codingforums.com/showthread.php?t=218803

1

確保你使用var聲明......在那裏也促使調試

尼斯點點。

for(var j=0; j < ARRAY.length; j++) { 
{ 
    TOTAL += ARRAY[j]; 
    //alert("The count of J is now " + j); 
} 
+0

感謝您的調試提示@Graeme,但不幸的是,添加var不能解決我的問題。我開始失去希望。目前我已經聲明瞭一個等於TOTAL-ARRAY [0]的新變量,它給出了正確的數字,但是這顯然非常混亂。 –

2

 
    var TOTAL = 0; 
    for (var j = 0, len = ARRAY.length; j < len; j++) { 
     TOTAL += ARRAY[j]; 
    } 

MDN建議使用一個變量來保存的陣列長度。另外請用JSLint檢查你的腳本。

+0

感謝您的回覆@Bakudan,但不幸的是這呈現與以前相同的結果!我不知道發生了什麼事。也感謝JSLint,我以前從來沒有聽說過這個。在這種情況下,儘管它僅僅指出了我的代碼中的一些formattin錯誤,並沒有爲我的問題提供補救措施。 –

+0

@KarlMajor您提供的代碼段太小而無法找到其他內容。 – Bakudan