1

私はJavaScriptで機能を持っています:

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より大きい数値がある場合、この関数は、そのサブ桁の合計である新しい数値を返します(たとえば、28> 22 => return(2 + 8))。

この関数はFirefoxでうまく機能しますが、Internet Explorerで22より大きい数値の「NaN」エラーが発生します。したがって、問題は「else」にあるはずです。

どうしたの?

4

2 に答える 2

7

IEではnum.charAt(i)文字列にアクセスできないため、必要です。String[offset]

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

于 2011-10-25T17:01:13.917 に答える
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で私のために働いた

于 2011-10-25T17:03:40.647 に答える