タイトルのような場合について教えてください。
数値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も見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
都心のビルから人がいなくなる?オフィス過剰という「2023年問題」の実態
コロナ禍で定着したテレワーク。その影響により、東京23区から近隣県へ都民が流出し、2023年には都心のオフィスビルが空室だらけになる可能性があるそうだ。「教えて!goo」にも、「テレワークがきっかけで地方に移...
-
メダロット:第172話「Vol.172※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
料理家に聞いた!お正月に残ったお餅の保存法とおいしく食べ切る方法
お正月に出回るお餅。調理法が限られていて、消費に困ることはないだろうか。「教えて!goo」にも「正月に餅を沢山もらって食べ切れません」と、消費法を模索するユーザーからの投稿があった。そこで料理家のスガさ...
-
メダロット:第171話「Vol.171※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
税制改正大綱で電子帳簿保存法はどう変わったか?注意事項を元国税に聞いてみた
令和5年度の税制改正大綱が12月16日に取りまとめられた。貯蓄から投資への流れを促進するためにNISAを恒久化し、非課税期間を無期限とした。またスタートアップの支援を目的とした抜本的な方策も盛り込まれている。 ...
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
javascriptにてHTMLのhiddenエ...
-
5
hiddenのvalueの値を変えたい
-
6
HTML、Javascriptでトグルボタ...
-
7
Kintone(キントーン)でドロップ...
-
8
JSONで文字列が長い時
-
9
複数のsubmitボタンで押された...
-
10
ループで連続したフォームの値...
-
11
eval()を使わずに数値を取得し...
-
12
C言語クイックソートの比較総回...
-
13
IF文で
-
14
値を初期化したい。
-
15
テキストボックスに入力された...
-
16
VBAをJavaScriptに変換したいです
-
17
3桁区切りのカンマをつけたい...
-
18
name属性が同じフォームが複数...
-
19
セレクトボックスの初期選択状...
-
20
マクロ オブジェクト変数With...
おすすめ情報
-
- 専門家が謎を解く
- お金や恋愛など身近な悩みや疑問をプロの答えでまるっと解決!
-
- せきらら女子会
- 女同士でしか話せない年頃女性の本音が炸裂!
- 都心のビルから人がいなくなる?オフィ...
- メダロット:第172話「Vol.172※期間限...
- 料理家に聞いた!お正月に残ったお餅の...
ウォッチ 人気記事ランキング
-
- 風水師直伝!住まいに幸運を呼び込む三つのポ...
- 最近はおうち時間が増え、模様替えや断捨離をしたという人も多いので...
-
- 一人暮らしの女性です。家で全裸っておかしい...
- 一人暮らしをしている女性のみなさん。不躾な質問になるが、部屋では...
-
- “勘違いおじさん”が若い女性に言い寄る心理や...
- 「教えて!goo」にも、「勘違いしているおじさんが多すぎませんか?...
- 4 料理家に聞いた!お正月に残ったお餅の...
- 5 都心のビルから人がいなくなる?オフィ...
公式facebook
公式twitter