※ ChatGPTを利用し、要約された質問です(原文:数値計算したいのに文字列連結されてしまう。)
文字列連結で数値計算できない問題はどう解決する?
このQ&Aのポイント
JavaScriptを使用して交通費の合計値を計算するhtmlページで、文字列連結により数値計算ができない問題が発生しています。
テキストボックスの値を合計計算し、結果を表示する必要がありますが、文字列連結がされてしまい計算が正しく機能しません。
解決策としては、直前に-0を入れて数値計算として扱う方法や、parseInt関数を使用して文字列を数値に変換する方法があります。
数値計算したいのに文字列連結されてしまう。
交通費の合計値を計算するhtmlページを作成しております。
テキストボックスの値が変更された時に動くJavaScriptを作成しております。
html側には name="cost1" ~ name="cost10" までのタグがあ、
どのテキストボックスが変更されても合計計算のJavaScriptが呼ばれます。
下記のようなソースを書いておりまして、
cost1~cost10までの合計値をcost_sum.valueに代入したいと思っています。
しかし下記※印部で文字列連結がされてしまいます。
過去の類似質問等検索しまして、
直前に-0を入れて数値計算として扱わせる事や、
parseInt(costsum);
を直前に入れるなど試みたのですが上手く行きません。
htmlとJavaScriptを扱い始めて日が浅く、
基本的なことを聞いてしまっているとは思いますがよろしくお願いします。
【test.html】
<input type="text" value="100" name="cost_1" id="cost_1" size="5" OnChange="sum_calculate();">
…(中略)…
<input type="text" value="2000" name="cost_2" id="cost_2" size="5" OnChange="sum_calculate();">
<!-- 合計値をcost_sum.valueに入れる --!>
<input type="text" value="" style="background-color:#D4D0C8" readonly="readonly" name="cost_sum" id="cost_sum" size="5">
【test.ja】
function sum_calculate()
{
n = 1;
costsum = 0;
while(n <= 10 ) {
alert(n + "週目");
va = "cost_" + n;
va = document.getElementById(va).value;
alert(va);
costsum = costsum - 0 + va ;
//※文字列連結されてしまう
alert(costsum);
n = n + 1;
}
this.cost_sum.value = costsum;
}
お礼
早速の回答ありがとうございます。 最後の計算によって文字列、数値切り替わるのではなく、 どちらか一方が文字列だったら文字列になるのですね。 おかげさまで解決しました。ありがとうございました。