質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1826閲覧

セレクトボックスで選択した項目を保存したい

ginia3150

総合スコア2

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/06/22 03:45

編集2021/06/22 04:50

前提・実現したいこと

セレクトボックスで選択したものを取得し下の項目に保存していきたいです。
現在挙動としては一つは取得できるのですが保存保持ができる状態ではないです。
現在の挙動

発生している問題

セレクトボックスの保存保持に使う記述がわからない状態です。

該当のソースコード

ご指摘いただいたので修正いたします。

html

1<%= render "shared/header" %> 2<main> 3 <div class="basket"> 4 <%= render "food" %> 5 <div class="basket-product"> 6 <h2><span class="badge-primary">選択したテキスト</span></h2> 7 <h1><strong><span class="item-quantity"></span>食品名2</strong></h1> 8 <h1><strong><span class="item-quantity"></span>食品名3</strong></h1> 9 </div> 10 </div> 11 <aside> 12 <div class="summary"> 13 <div class="summary-total-items"><span class="total-items"></span>各種合計値</div> 14 <div class="summary-total"> 15 <div class="total-title">P</div> 16 <div class="total-value final-value" id="basket-total">0</div> 17 <div class="total-title">F</div> 18 <div class="total-value final-value" id="basket-total">0</div> 19 <div class="total-title">C</div> 20 <div class="total-value final-value" id="basket-total">0</div> 21 <div class="total-title">C</div> 22 <div class="total-value final-value" id="basket-total">0</div> 23 </div> 24 <div class="summary-checkout"> 25 <button class="checkout-cta">Checkout</button> 26 </div> 27 </div> 28 </aside> 29 </main> 30

html

1 2<div class="pulldown"> 3 4 <select class="mainselect" name="major_list"> 5 <option class="foods" selected="selected">--食材の種類--</option> 6 <%= render "foods" %> 7 </select> 8 9 10 11 <select name="food_list" id="food-select"> 12 <option class="foods" selected="food-selected">--食材選択--</option> 13 <option class="meat" id="">--肉類--</option> 14 <%= render "meat" %> 15 <option class="seafood" id="">--魚介類--</option> 16 <%= render "seafood" %> 17 <option class="egg" id="">--卵類--</option> 18 <%= render "egg" %> 19 <option class="beans">--豆類--</option> 20 <%= render "beans" %> 21 <option class="milk">--乳類--</option> 22 <%= render "milk" %> 23 <option class="grain">--穀類--</option> 24 <%= render "grain" %> 25 <option class="potato">--芋類及び澱粉類--</option> 26 <%= render "potato" %> 27 <option class="fruit">--果実類--</option> 28 <%= render "fruit" %> 29 <option class="nuts">--種実類--</option> 30 <%= render "nuts" %> 31 <option class="mushroom">--キノコ類--</option> 32 <%= render "mushroom" %> 33 <option class="alga">--藻類--</option> 34 <%= render "alga" %> 35 <option class="vegetable">--野菜類--</option> 36 <%= render "vegetable" %> 37 <option class="oils">--油脂類--</option> 38 <%= render "oils" %> 39 <option class="sugar">--砂糖及び甘味類--</option> 40 <%= render "sugar" %> 41 <option class="pastry">--菓子類--</option> 42 <%= render "pastry" %> 43 <option class="drink">--嗜好飲料類--</option> 44 <%= render "drink" %> 45 <option class="seasoning">--調味料及び香辛料類--</option> 46 <%= render "seasoning" %> 47 <option class="off-the-shelf">--調理済み流通食品類--</option> 48 <%= render "off-the-shelf" %> 49 </select> 50 51 52 <button onclick="hoge();" type="button" class="btn-text">取得</button> 53 54<h2><span class="badge-primary">選択したテキスト</span></h2> 55 56 <script> 57 $(function(){ 58 //《selectタグ その①》路線を選択すると呼び出される関数 59 $('select[name="major_list"]').change(function(){ 60 //《selectタグ その①》nameの値を取得 61 var line_class = $('select[name="major_list"] option:selected').attr("class"); 62 console.log(line_class); 63 //《selectタグ その②》 子要素タグの個数を数え上げ 64 var count = $('select[name="food_list"]').children().length; 65 console.log(count); 66 for(a=0; a<count; a++){ 67 var food_list = $('select[name="food_list"] option:eq('+a+')'); 68     //《selectタグ その①》で選択した路線と等しいname値を持つoptionタグを表示 69 if(food_list.attr("class") === line_class){ 70 food_list.show(); 71 } else { 72 food_list.hide(); 73 } 74 } 75    //《selectタグ その③》 子要素タグの個数を数え上げ 76 for(b=0; b<count; b++){ 77 var status_list = $('select[name="status_list"] option:eq('+b+')'); 78     //《selectタグ その②》で選択した駅と等しいname値を持つoptionタグを表示 79 if(status_list.attr("class") === line_class){ 80 status_list.show(); 81 } else { 82 status_list.hide(); 83 } 84 } 85 }); 86}); 87 </script> 88 <script> 89 function hoge() { 90 91 var obj = document.getElementById('food-select'); 92 // 選択されている値の番号を取得 93 var idx = obj.selectedIndex; 94 // 値を取得 95 var txt = obj.options[idx].text; 96 // 表示 97 document.getElementsByClassName('badge-primary')[0].textContent = txt; 98 } 99 </script> 100</div>

試したこと

おそらく現在記述しているこのJava Scriptを弄れば可能だとは考えたのですが実際どのように改善すればいいのか調べてもわからずいるところです。

補足情報(FW/ツールのバージョンなど)

最近始めたばかりでどうしたらいいか皆目検討がつかない状態になってしまいました。
何かこうしたらいいよや、こういった記述を使えばいけるんじゃないなど、教授願えればと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

回答いただいた記述に全体を変更することで無事に機能することができました。

投稿2021/06/22 05:35

ginia3150

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

2段階で食材を選択する部分は割愛して

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('#btn').addEventListener('click',()=>{ 4 view.innerHTML+=s2.value; 5 }); 6}); 7</script> 8<select name="s1" id="s1"> 9<option value="">--</option> 10<option value="肉"></option> 11<option value="魚"></option> 12</select> 13<select name="s2" id="s2"> 14<option value="">--</option> 15<option value="豚"></option> 16<option value="牛"></option> 17</select> 18<input type="button" value="取得" id="btn"> 19<div id="view"></div>

投稿2021/06/22 04:25

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ginia3150

2021/06/22 04:30

早急の回答ありがとうございます。 この記述は私が記述している <script> function hoge() { var obj = document.getElementById('food-select'); // 選択されている値の番号を取得 var idx = obj.selectedIndex; // 値を取得 var txt = obj.options[idx].text; // 表示 document.getElementsByClassName('badge-primary')[0].textContent = txt; } </script> と入れ替えて記述する認識でよろしいでしょうか?
yambejp

2021/06/22 04:35

HTMLさえ書いていない質問ですから入れ替えるのかどうかも判断できません 私の回答で動作が確認できたらそれに合わせた処理を書けばいいのでは?
ginia3150

2021/06/22 04:38

失礼しました。 今後は質問の仕方にも気をつけたいと思います。
ginia3150

2021/06/22 04:54

yambejpさん 先程は失礼しました。 今htmlも含めたコードに更新しましたのでもう一度確認していただけますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問