-3

テキスト ボックス内のすべての整数の合計を取得しようとしています。数字はカンマで区切ります。数字を加算して合計を取得する必要があります。悲しいことに、それらを取得できません。

私のコードは:

 <script type="text/javascript">
        function computeData()
        {
            var data = document.getElementById("data").value;
            var temp = data.split(",");
            for( i=0; i<temp.length; i++)
            var k=0;
            {
                var j = temp[i];
                k  = k + j;
                alert(k);
            }
            document.getElementById("sum").value= k;
        }
    </script>
4

6 に答える 6

3

次を使用して、文字列を整数に解析する必要がありますparseInt

> 2 + '3'
'23'
> 2 + parseInt('3', 10)
5

は、数値が 10 進数であると想定するように10指示します。parseInt浮動小数点数がある場合は、次を使用しますparseFloat()(基数を指定する必要はありません)。

> 2 + parseFloat('3.13')
5.13
于 2013-03-07T02:40:10.107 に答える
1

それらが整数になることがわかっている場合:

var data = document.getElementById("data").value;
var sum = data.split(",").reduce(function(prev, curr){
    return parseInt(prev,10) + parseInt(curr,10);
 });

整数についてよくわからない場合parseFloatは、parseInt の代わりに使用できます。

これは、古いブラウザーでは機能しない可能性があることに注意してください。IE9 よりも古い IE をサポートする必要がある場合は、ループ内で parseInt/parseFloat をそのまま使用することをお勧めします。(k 宣言をループ外に移動)

var k=0;
for( i=0; i<temp.length; i++)
{
     var j = temp[i];
     k  = k + parseInt(j,10);
     alert(k);
}
于 2013-03-07T02:41:53.793 に答える
0

私はevalのアイデアが好きですが、正規表現を使用して、整数と小数、および任意のプラス記号またはマイナス記号を照合して合計することもできます。非数値は無視されるため、コンマまたはスペースで区切るか、数値の間に「+」または「-」を使用することができます。

function computeData(){
    var data= document.getElementById("data").value;
    var rx=/([+-]?(\.\d+|\d+(\.\d+)?))/g, n= 0, M;
    while((M= rx.exec(data))!= null){
        n+= (+M[1])
    }
    document.getElementById("sum").value= n;
}
于 2013-03-07T04:46:55.900 に答える
0

これは、整数または浮動小数点数の CSV 文字列で機能します。

var data = document.getElementById("data").value;
var a = data.match(/\d+(?:[.]\d+)?/g);
var num = 0;
a.forEach(function(n){
    num += parseFloat(n);
});

console.log(num);
于 2013-03-07T02:55:12.607 に答える
0

次の構文も提案する場合があります

        var temp = data.split(",");
        for(var i=0, k=0; i<temp.length; i++;)
        {
            k += parseInt(temp[i]);
        }
于 2013-03-07T02:55:23.730 に答える
0

検討:

var data = '1,2,3';

eval(data.split(',').join('+'))); // 6

また

eval(data.replace(/,/g,'+')); // 6

編集

そこにいるすべての評価嫌いのために(あなたはあなたが誰であるか知っています!!):

var sum = data.split(',').reduce(function(p, c){return p + +c},0);

ES5 reduceのサポートが必要であることに注意してください。MDN には polyfill があります。

于 2013-03-07T03:12:21.423 に答える