1

以下のコードを使用しています。

<script type="text/javascript">
function minus(){
var t=document.getElementById("totalcost").value;
var u=document.getElementById("advpay").value;  
var set=(t-u);
document.getElementById("textfield").value=set;
return true;
}
</script>

totalcost id フィールドの値として「6000」を入力し、 advpay id フィールド「1000」入力しました。したがって、テキストフィールドの idフィールドには5000 (6000-1000)と表示されるはずですが、 NaNとして回答しています。エラーはどこですか?

4

2 に答える 2

5
<script type="text/javascript">
function minus() {
    var t = parseInt(document.getElementById("totalcost").value, 10),
        u = parseInt(document.getElementById("advpay").value, 10),
        set = (t - u);
    document.getElementById("textfield").value = set;
    return true;
}
</script>

これは、2 つの文字列を減算しようとしているために発生しています。value入力の文字列を返します。それらを減算するには、数値に解析する必要があります。の基数を指定することを忘れないでくださいparseInt。そうしないと、数値が 10 進数として解析されない可能性があります。詳細については、この回答を参照してください。

于 2013-06-18T19:44:40.633 に答える
0

NaN は Not a Number の略です。NaN は、数値以外のもの (文字列、ブール値、オブジェクト) を含む計算の結果になります。あなたの場合、計算は2つの文字列を使用して行われたため、NaNが返されました。計算を行う前に、値を数値にキャストする必要があります。

次のコードを使用して、値をキャストできます。

例 1:

 var t = +document.getElementById("totalcost").value;
 u = +document.getElementById("advpay").value;

例 2 (@LightStyle が示唆するように):

 var t = parseInt(document.getElementById("totalcost").value, 10),
 u = parseInt(document.getElementById("advpay").value, 10),
于 2013-06-18T20:01:49.167 に答える