前提・実現したいこと
セレクトボックスで選択したものを取得し下の項目に保存していきたいです。
現在挙動としては一つは取得できるのですが保存保持ができる状態ではないです。
現在の挙動
発生している問題
セレクトボックスの保存保持に使う記述がわからない状態です。
該当のソースコード
ご指摘いただいたので修正いたします。
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/ツールのバージョンなど)
最近始めたばかりでどうしたらいいか皆目検討がつかない状態になってしまいました。
何かこうしたらいいよや、こういった記述を使えばいけるんじゃないなど、教授願えればと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。