2009-11-18 66 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