2011-10-25 75 views
1

我有功能的JavaScript:JavaScript的parseInt函數IE楠錯誤

function calc(num) { 
    if (num <= 22) { 
      return parseInt(num); 
    } else { 
      num += ''; 
      var curr = 0; 
      for (var i = 0; i < num['length']; i++) { 
        curr += parseInt(num[i]); 
      }; 
      return curr; 
    }; 
}; 

此函數計算新的號碼,如: 如果我數大於22,則該函數返回新號碼這是它的一個總和的subdigits(例如28> 22 =>返回(2 + 8))。

這個功能在Firefox中很好用,但是我在Internet Explorer中遇到了數字大於22的「NaN」錯誤。所以問題必須在「其他」中。

怎麼了?

+2

請提供一個十進制基數'parseInt函數()':'parseInt函數(NUM [我],10)'。省略第二個參數是一個非常不好的習慣。 –

+1

猜測:嘗試'num = num +'';'如果沒有爲字符串連接定義'+ ='。 – Hogan

+0

我已經嘗試了基數,但沒有效果 – ieaglle

回答

7

您需要num.charAt(i),因爲您無法訪問IE中的String[offset]字符串字符。

s = "qwe"; alert(typeof s[1] === 'undefined')true

+0

這包括基數'。謝謝! – ieaglle

1

試試這個:

function calc(num) { 
    if (num <= 22) { 
      return parseInt(num); 
    } else { 
      number = num.toString(); 
      var curr = 0; 
      for (var i = 0; i < number.length; i++) { 

        curr += parseInt(number.charAt(i)); 
      }; 
      return curr; 
    }; 
}; 


alert(calc(23)); 

爲我工作在Firefox和IE

+0

不要忘記基數,因爲其他人已經評論過其他數字,如「0123」不會給你期望的 –