1

重複の可能性:
2 つの文字列を数値のように加算する方法は?

簡単な JavaScript コードを作成しました。2 つの入力ボックスを使用して、2 つの値から数値を加算したいと考えています。コードは次のとおりです。結果は 35 ではなく 1520 です。

どうすれば修正できますか?

n1 <input type = "number" id = "n1" value=15 />
n2 <input type = "number" id = "n2" value=20 />

<p>Sum?</p>
<button onclick="sum()">Try it</button>
<p id="demo2">Result?? </p>

<script type="text/javascript">
 function sum() 
{ 
    var fn, ln; 
    fn = document.getElementById("n1").value; 
    ln = document.getElementById("n2").value; 
    result =  (fn+ln); 
    document.getElementById("demo2").innerHTML = result; 
}
</script>
4

2 に答える 2

6

parseInt()、またはparseFloat();を使用します。あなたが経験した問題は、2つの数値を加算するのではなく、2つの文字列を連結していたことです。parseInt()(実数を検出すると仮定して)文字列を数値に変換することにより、この問題に対処します。

 function sum() 
{ 
    var fn, ln, result; 
    fn = parseInt(document.getElementById("n1").value, 10);
    ln = parseInt(document.getElementById("n2").value, 10);
    result =  (fn+ln); 
    document.getElementById("demo2").innerHTML = result; 
}

, 10後に表示されるのvalueは基数です。これにより、返される数値(存在する場合)がどの数値ベースになるかが保証されます。

またresult、グローバルスコープを汚染しないように(そして、他の場所で他の変数に問題が発生する可能性があるため)、変数も関数内で宣言する必要があることに注意してください。

参照:

于 2012-08-14T22:03:39.413 に答える
4
result =  (parseFloat(fn)+parseFloat(ln)); 
于 2012-08-14T22:03:40.753 に答える