
タイトルのような場合について教えてください。
数値ABCにそれぞれ数値を入れて合計を出すのですが、
1度の入力で完結するのでなく「計算」をクリックする度に
入力された数値が合計に加算させていきたいです。
できれば、一度クリックされたら数値入力内容をリセットさせたいと思っています。
(下記はサンプルで実際には複数の合計項目に数値ABCがそれぞれ計算されたものが入ります。)
例)
数値A 10
数値B 5
数値C 0
に入力されてクリックされたら、合計は15。
再度入力されて(出来ればここで数値ABCをリセットして0に)
数値A 10
数値B 5
数値C 0
なら、合計30。
という感じです。
初歩的な質問だと思いますが、かなりの初心者で
どうしていいのか分からず悩んでいます。
どうぞよろしくお願いします。
<html>
<head>
<script language="JavaScript"><!--
function calc()
{
var a = parseFloat(0);
a += parseFloat(document.getElementById('myform').calcText1.value);
a += parseFloat(document.getElementById('myform').calcText2.value);
a += parseFloat(document.getElementById('myform').calcText3.value);
document.getElementById('myform').calcText.value = a;
}
// --></script>
</head>
<body>
<form id="myform">数値A<INPUT type="text" name="calcText1" value="0"><BR>
数値B<INPUT type="text" name="calcText2" value="0"><BR>
数値C<INPUT type="text" name="calcText3" value="0"><BR>
<BR>
<br>
<input type="button" value="計算" onClick="calc()"><input type="reset" value="リセット" >
<br><br>
合計<INPUT type="text" name="calcText" value="0">
<br><br>
</form>
</body>
</html>
No.3ベストアンサー
- 回答日時:
サンプル。
<html>
<head>
<script type="text/javaScript">
function calc(F){
//合算(合計欄の値も使う)
var a = parseFloat(F.elements['calcText'].value)
+ parseFloat(F.elements['calcText1'].value)
+ parseFloat(F.elements['calcText2'].value)
+ parseFloat(F.elements['calcText3'].value);
F.reset();//フォームをリセット
F.elements['calcText'].value = a;//結果の設定
return false;
}
</script>
</head>
<body>
<form onsubmit="return calc(this)">
数値A<input type="text" name="calcText1" value="0"><br>
数値B<input type="text" name="calcText2" value="0"><br>
数値C<input type="text" name="calcText3" value="0"><br>
<br>
<input type="submit" value="計算">
<input type="reset" value="リセット" >
<br><br>
合計<input type="text" name="calcText" value="0" readonly>
<br><br>
</form>
</body>
</html>
これです、イメージ通りのサンプルです。
これなら自動で入力後にリセットされて良いです。
勉強になりました。
ありがとうございました。
No.4
- 回答日時:
元のソースコードを活かすとすると、グローバル変数の使い方を覚えるだけです。
・ 関数内で定義された変数は、有効範囲はその関数内のみです。今回
var a = parseFloat(0);
で定義された変数aは、関数calc()が終わると消えてしまいます。
・ 変数を明示的にグローバル変数にするには、関数の外で、varを使って定義するのが良い方法です。グローバル変数は、ページが表示され続ける限り有効です。
var a = parseFloat(0);
を
calc()の外に移動するだけでOKです。
以下のコードを参考にしてみてください。
------------------------------------------------------------
<html>
<head>
<script language="JavaScript"><!--
var a = parseFloat(0);
function calc()
{
a += parseFloat(document.getElementById('myform').calcText1.value);
a += parseFloat(document.getElementById('myform').calcText2.value);
a += parseFloat(document.getElementById('myform').calcText3.value);
document.getElementById('myform').calcText.value = a;
}
// --></script>
仰るとおりグローバル変数とローカル変数の使い分けが...;;
ただ、外にやるだけでも良かったんですね^ ^;
勉強になりました。
ありがとうございました。
No.1
- 回答日時:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<script type="text/javascript">
//<![CDATA[
var a = 0;
function reset(){
document.getElementById('calcText1').value = '0';
document.getElementById('calcText2').value = '0';
document.getElementById('calcText3').value = '0';
//合計もリセットする気なら
//document.getElementById('calcText').value = '0';
}
function calc()
{
a += parseFloat(document.getElementById('calcText1').value);
a += parseFloat(document.getElementById('calcText2').value);
a += parseFloat(document.getElementById('calcText3').value);
document.getElementById('calcText').value = a.toString();
}
//]]>
</script>
<title>Q3917729 TestCase1</title>
</head>
<body>
<h1>Q3917729 TestCase1</h1>
<h2>入力項目</h2>
<dl>
<dt>数値A</dt>
<dd><input type="text" id="calcText1" value="0" /></dd>
<dt>数値B</dt>
<dd><input type="text" id="calcText2" value="0" /></dd>
<dt>数値C</dt>
<dd><input type="text" id="calcText3" value="0" /></dd>
</dl>
<h2>処理</h2>
<ul>
<li><input type="button" value="計算" onclick="calc();" /></li>
<li><input type="button" value="リセット" onclick="reset();"/></li>
</ul>
<h2>結果</h2>
<dl>
<dt>合計</dt>
<dd><input type="text" id="calcText" value="0" /></dd>
</dl>
</body>
</html>
<!--
教えてgooの仕様で,拡張子をxmlにして読み込ませたときエラーが出ることがある。その時は『適宜編集した後』,拡張子をhtmlとして用いるなどすること。どのように編集するかは面倒なので省略
-->
なるほど、こうすれば良かったんですね。
教えてもらえればなんでもない事ですが、
これが分からなくて困ってたので助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数連動型のプルダウンフォー...
-
チェックボックスがundefinedと...
-
hiddenのvalueの値を変えたい
-
ループで連続したフォームの値...
-
RUBY の 分数の 精度
-
name属性が同じフォームが複数...
-
パスワード入力フォームの実装...
-
PERL Ajax JSON 付随情報
-
HP上で流す音楽の音量を調節す...
-
ラジオボタンとテキストを同時...
-
value内に変数を入れたい
-
switchを使って四則演算のプロ...
-
ラジオボタンの選択で解答・点...
-
クリックの度に加算していくには?
-
フォームで入力した値を別のフ...
-
見積もり番号
-
【jQuery】input nameの文字列...
-
return trueとreturn falseの用...
-
Javascriptの電卓で最初の何も...
-
【javascript・PHP】プルダウン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hiddenのvalueの値を変えたい
-
value内に変数を入れたい
-
VB.NET DateTimeの型について
-
複数のsubmitボタンで押された...
-
setIntervalの間隔を途中で変更...
-
javascriptでhiddenに二次元配...
-
チェックボックスがundefinedと...
-
sessionStorageを調べています。
-
Pythonで会員サイトの自動ログ...
-
Web上でexcelの計算ができるよ...
-
フォーカスすると初期値が消去...
-
name属性が同じフォームが複数...
-
ラジオボタンの選択で解答・点...
-
改行の後の空白を削除したい。
-
テキストボックスに入力された...
-
大量のselect要素のvalueを短い...
-
3桁区切りのカンマをつけたい...
-
プルダウン選択時、既に入力済...
-
CDOMailで本文テキストの文字コ...
-
引数に数値、文字列の混在
おすすめ情報