javascriptで複数のセレクトメニューを対象に、選択した時点で値を取得して、その合計を計算したいのですが、値を外にもって出ることができません、アドバイスをいただけないでしょうか?
【HTML】
<select id="aPrice">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
</select>
<select id="bPrice">
<option value="1500">1500</option>
<option value="1800">1800</option>
<option value="1300">1300</option>
<option value="2500">2500</option>
<option value="4800">4800</option>
</select>
【JS】
const total = 0;
const aPrice = document.getElementById("aPrice");
let aVal = 0;
aPrice.addEventListener("change", function () {
aVal = aPrice.value;
})
const bPrice = document.getElementById("bPrice");
let bVal = 0;
bPrice.addEventListener("change", function () {
bVal = bPrice.value;
})
それぞれの取得した値、上記の場合aVal とbVal に選択した値が入っているのですが、これらの金額を外の変数 total に入れて合計を出したいのですが、それぞれの関数の外に出してしまうと値が取得できなくなってしまいます。
そもそもセレクトの値を取得するにあたって方法が根本的に間違っていますでしょうか?
初歩的な質問ですみません、アドバイスを頂けますと幸いです。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは
>その合計を計算したいのですが、値を外にもって出ることができません、
ご提示の方法であれば、関数外からも参照できるはずです。
(関数外で、変数 aVal, bVal が宣言されていますので)
ただし、セレクト要素が変更された際に、変数にその値が代入されるようになっていますので、その後で合計の計算をしないと、正しい値を得ることはできません。
実際に参照する部分が提示されていませんので、推測になってしまいますが・・
想像するところ、ご提示のスクリプトに続けて
total = aPrice + bPrice
などと記述していませんでしょうか?
その場合は、初期値のままでの計算になるので、 aVal, bVal 共に0の状態なので、合計の結果は0になると思います。
>アドバイスをいただけないでしょうか?
合計を算出なさりたければ、changeイベントの処理内で合計を計算するようにしてください。
( aVal, bVal に値が入った後で計算するという意味です)
そうすれば、お望みの結果になるものと想像します。
ご提示の構文形式だと、それぞれ別の処理になっているので記述が重複してしまいますが、まとめて処理することも可能です。
以下は、そのような考え方での一例です。
<script>
{
const
ids = ['aPrice', 'bPrice'],
V = id => document.getElementById(id).value * 1;
document.addEventListener('change', e => {
if(ids.indexOf(e.target.id)<0) return;
const total = V(ids[0]) + V(ids[1]);
alert(`合計=${total}`); // ひとまずアラート表示
});
}
</script>
ありがとうございます!
ちょっと私には書き方が難しい部分があるのですが、調べながら進めてみたいと思います。
>>total = aPrice + bPrice
漏れており申し訳ありません、おっしゃる通りこのような感じで取得しておりました。
V = id => document.getElementById(id).value * 1;
↑このような書き方も初見でしたので、調べてみたいと思います。
このような初心者の質問にご回答いただきまして感謝申し上げます、ありがとうございます!mm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript 【急募】選択した物件と施設の距離をランキング&条件によって画像表示を変更する方法。 2 2021/12/24 07:08
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
JavascriptでXSSの脆弱性への対策を行いたい
JavaScript
-
アマゾンのような評価の星を選択した情報を確認画面でも表示させたいです。
PHP
-
javascriptでbgmを自動再生する方法を教えてください。
JavaScript
-
-
4
[初心者]javascriptのfor文でなぜか繰り返し処理をしない。理由がわかりません。
JavaScript
-
5
ボタンが押されたらWebページの文字コードを 変える、というプログラミングを書きたいです。 目的は文
HTML・CSS
-
6
JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです
JavaScript
-
7
【JavaScript】検索がヒットした場合、プルダウンをオープンで表示させる方法
JavaScript
-
8
JavascriptでDom XSSの脆弱性対策を行いたい
JavaScript
-
9
特定の文字列を複数抜き出したいです。 関数かGAS、あるいは条件付き書式等で判別できたら教えて下さい
JavaScript
-
10
HTMLのbody内に<style>~</style>定義は作法的にOKでしょうか?
HTML・CSS
-
11
プログラミングで詰まった時って皆さんどうしていますか?
その他(プログラミング・Web制作)
-
12
ホームページの事でおしえてください
CGI
-
13
このjavascriptのif文、条件式になっていないですが、どういう意味ですか?
JavaScript
-
14
htmlの修正方法を教えていただきたいです。
HTML・CSS
-
15
正規表現
その他(プログラミング・Web制作)
-
16
IndexedDB を使ってファイルアップロード可能な掲示板を非同期通信で作成したい
JavaScript
-
17
大至急。webのシングルページを作ろうと考え、イラレでデザインをしました。 それからの手順で悩んでる
HTML・CSS
-
18
【JavaScript?HTML?】Webページでこのページは戻ることは出来ませんと表
JavaScript
-
19
質問です。 配列が100以上の場合は、100単位で繰り返し処理を実行したいのですが、どのように処理を
Java
-
20
かっこいいウェブを作るテク
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全てのselect要素をデフォルト...
-
javascriptでセレクトボックス...
-
リストボックス内の重複したも...
-
プルダウンメニューに連動する...
-
セレクトボタンで特定の項目で...
-
<input>の選択肢をプルダウンメ...
-
ラジオボタンとプルダウンを連...
-
セレクトボックスの組み合わせ...
-
select+submit部分をonclikでsu...
-
セレクトボックスで配列を呼び...
-
2段階プルダウンで1段階目の選...
-
WebBrowserを使ってプルダウン...
-
動的なセレクトボックスの生成...
-
javascriptで選択肢が分かれる...
-
今日の日付を自動的にセレクト...
-
同一ページに複数のプルダウン...
-
jqueryでselect要素を表示・非...
-
プルダウン選択を変更すると、...
-
2段階連動セレクトボックスでの...
-
複数のプルダウンを1つにまとめ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
全てのselect要素をデフォルト...
-
【JS】selectでchangeした時の...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
複数のプルダウンを1つにまとめ...
-
コードレビューをお願いします。
-
JavaScriptで<select>の<option...
-
<input>の選択肢をプルダウンメ...
-
select要素のvalueを配列で取得...
-
selectを変更不可にしたい
-
VBScriptでHTMLのセレクトボッ...
-
ラジオボタンとプルダウンを連...
-
javascriptで合計金額を算出し...
-
中百舌鳥駅と深井駅を入れ替え...
-
同じ名前のセレクトがある場合...
-
セレクトボックスで配列を呼び...
-
今日の日付を自動的にセレクト...
-
プルダウンの値によって活性・...
-
サイト内の物件を複数の検索条...
おすすめ情報