前提・実現したいこと
選択内容に応じて次のセレクトボックスの内容を動的に変化させる際に、optionの値を指定したいです。
以下のサイトを参考にして、セレクトボックスを動的に変化させるとこまでは、完成しました。
[jQuery] セレクトボックスの切り替えに応じて、次のセレクトボックスの選択肢を切り替える
valueの値をjson形式で取得したデータよりセットしようと試みましたが、以下の連想配列より'code'もしくは'name'部分のみ取り出す方法が分かりません。
取り出すために実施したこと
javascript
1for (var key in b_options) { 2 console.log(b_options); 3 console.log("b_options[key].code"); 4 console.log("b_options[key].name"); 5} 6 7//出力結果 8var b_options =[[{"code":"001","name":"営業A"},{"code":"002","name":"営業B"},{"code":"003","name":"営業C"},{"code":"004","name":"開発"}],[{"code":"001","name":"営業A"},{"code":"002","name":"営業B"},{"code":"003","name":"開発"}], 9[{"code":"001","name":"営業A",{"code":"002","name":"営業B"},{"code":"003","name":"開発A"},{"code":"004","name":"開発B"}]] 10undefined 11undefined
最終的には以下のような表示を実現したいです。
html
1<select id="select_a">東日本</select> 2<select id="select_b"> 3 <option value="001">営業A</option> 4 <option value="002">営業B</option> 5 <option value="003">開発</option> 6</select>
現在の完成したコード
html
1<html> 2 <head> 3 <title>PHP Test</title> 4 <!-- Bootstrap CDN 読込--> 5 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 6 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> 7 <link rel="stylesheet" href="style.css"> 8 </head> 9 <body> 10 <select id="select_a"></select> 11 <select id="select_b"></select> 12 </body> 13</html>
javascript
1<script> 2var a_options = ['東日本', '西日本','海外']; 3var b_options = JSON.parse('<?php echo $json; ?>'); 4 5$(function() { 6 7 // 8 // select要素を予め取得しておく 9 // 10 var $select_a = $('#select_a'); 11 var $select_b = $('#select_b'); 12 13 // 14 // セレクトボックス①決定時にセレクトボックス②に選択肢を設定 15 // 16 $select_a.change(function(e) { 17 var selected_a = $select_a.val(); 18 $('#select_b option').remove(); 19 b_options[selected_a].forEach(function(option_b, idx) { 20 var $option_tag = $('<option>').val(idx).text(option_b); 21 $select_b.append($option_tag); 22 }); 23 $select_b.change(); 24 }); 25 26 // 27 // セレクトボックス①は固定なので最初に選択肢に追加する 28 // 29 a_options.forEach(function(option_a, idx) { 30 var $option_tag = $('<option>').val(idx).text(option_a); 31 $select_a.append($option_tag); 32 $select_a.change(); 33 }); 34 35});
回答2件
あなたの回答
tips
プレビュー