2009-11-18 28 views
1

我試圖將test()函數的返回值添加到變量結果中,但+=似乎不起作用。我收到錯誤「無效變量初始化」。 我也試過將i++更換爲i+=,這也沒有效果。也許我完全錯了,應該使用while循環呢?我完全迷失了方向..如何使用循環保存值

我想「結果」看起來是這樣的:

var result = no no no 0no 0no no; 

等(沒有空格,當然)。

任何幫助非常感謝!謝謝

function test(no){ 

      if (no <= 15){    
       return '0' + parseInt(no); 
      } 

      else {    
       return parseInt(no); 
      }  
} 


     for(i = 0; i < pics.length; i++){ 

      var b = pics[i].value; 

      var result += test(b); 

     } 
+0

這是什麼語言? – GManNickG 2009-11-18 19:26:21

+0

看起來像javascript。 – 2009-11-18 19:27:21

+0

鑑於語法和變量名稱,我假設JavaScript已被重新簽名。 ActionScript(或任何其他基於ECMAScript的語言)是另一種可能的選擇,但在本示例中它們具有相同的語法。 – 2009-11-18 19:29:08

回答

5

每次循環開始時,var result都會消失。您需要將其移到循環外部:

var result = ''; // lives outside loop 
for(i = 0; i < pics.length; i++) 
{ 
    var b = pics[i].value; 
    result += test(b); 
} 
+0

結果是一個字符串,它應該被初始化爲''不是0. – 2009-11-18 19:29:50

+0

只是固定的。 :) – GManNickG 2009-11-18 19:30:09

+0

謝謝HEAPS!這解決了整個事情! – patad 2009-11-18 19:34:44

0

您需要初始化結果作爲字符串而不是var。

例如

環外

string result = string.Empty;

for loop

result + = test(b);

結束for循環

0

由於你使用的是增量運算符的新聲明的變量看到這個錯誤。使用'=':

for(i = 0; i < pics.length; i++) 
{ 
    var b = pics[i].value; 
    var result = test(b); 
} 

雖然正如GMain指出的那樣,真正的解決方案是將'result'變量聲明移到for循環之外。

+0

結果是每個元素上test()的結果的累積級聯。 – 2009-11-18 19:29:17

+0

不需要downvote。我解釋了他編譯錯誤的原因。 – 2009-11-18 19:30:27

+0

「編譯錯誤」?我懷疑有一個,Xaero。 :-) – Nosredna 2009-11-18 19:43:04

相關問題