2

これは、すべてのテキストボックスに追加している場合のコードですが、正常に動作しますが、数値を削除すると NaN が表示されます:

function sumVal()
{
    var total = 0;
    var coll = document.getElementsByTagName("input")
    for ( var i = 0; i<coll.length; i++)
    {
        var ele = coll[i];
        total += parseInt(ele.value);
    }
    var Display = document.getElementById("Display");
    Display.innerHTML = total;
}

<input onkeyup="sumVal()" />
<input onkeyup="sumVal()" />
<input onkeyup="sumVal()" />
4

3 に答える 3

3

合計に追加する前に、値が NaN であることを確認してください。

total += (isNaN(parseInt(ele.value, 10)) ? 0 : parseInt(ele.value, 10));

また、基数を忘れないでくださいparseInt(またはparseFloat小数点以下の桁数がある場合に使用します):

基数

上記の文字列の基数を表す整数。 読者の混乱を防ぎ、予測可能な動作を保証するために、常にこのパラメーターを指定してください。基数が指定されていない場合、異なる実装では異なる結果が生成されます。

var nums = [10, "sads", 44, 16];
var numsLen = nums.length;
var total = 0;

while(numsLen--){
    total += (isNaN(parseInt(nums[numsLen], 10)) ? 0 : parseInt(nums[numsLen], 10));
}

このでは、「sads」は数値 (NaN) ではないため、合計に 0 を追加します。

于 2013-04-11T15:16:50.917 に答える
1

0数字でない場合は追加するだけです:

var theInt = parseInt(ele.value, 10);
total += (isNaN(theInt)) ? 0 : theInt;
于 2013-04-11T15:16:57.043 に答える