実現したいこと
複数のセレクトボックスから選択された組み合わせで出力する値を変えたい
発生している問題・分からないこと
2つのセレクトボックスではできたのですが3つのセレクトボックスの際にうまく実装できておりません
該当のソースコード
【2つのセレクトボックス】 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> </head> <body><script> function check(f){ var arr={ "A":{"D":'<a href="https://test.html">950</a>' ,"E":1400,"F":1850,"G":2500} ,"B":{"D":1200,"E":1850,"F":2400,"G":2800} ,"C":{"D":2300,"E":2500,"F":2800,"G":3200} }; var x=f.elements["x"].value; var y=f.elements["y"].value; f.elements["content"].value=(arr[x] && arr[x][y])?arr[x][y]:""; } </script> <form action="#" id="form"> <select name="x" onchange="check(this.form);"> <option value="">--</option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> <select name="y" onchange="check(this.form);"> <option value="">--</option> <option value="D">D</option> <option value="E">E</option> <option value="F">F</option> <option value="G">G</option> </select> <textarea name="content" style="display:none;"></textarea> <input type="submit" value="送信"> </form> <script> // submit時にイベント実行をする関数 document.getElementById('form').onsubmit = function (event) { // 再読み込み防止 event.preventDefault(); // 入力フォームの内容を取得 let inputForm = document.getElementById('form').content.value; // 入力内容を画面に出力 document.getElementById('output').innerHTML = `${inputForm}`; } </script> <p id="output"></p> </body> </html>
【3つのセレクトボックス】 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> </head> <body><script> function check(f){ var arr={ "A":{"D":'<a href="https://test.html">950</a>' ,"E":1400,"F":1850,"G":2500} ,"B":{"D":1200,"E":1850,"F":2400,"G":2800} ,"C":{"D":2300,"E":2500,"F":2800,"G":3200} }; var x=f.elements["x"].value; var y=f.elements["y"].value; var z=f.elements["z"].value; f.elements["content"].value=(arr[x][y] && arr[x][y][z])?arr[x][y][z]:""; } </script> <form action="#" id="form"> <select name="x" onchange="check(this.form);"> <option value="">--</option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> <select name="y" onchange="check(this.form);"> <option value="">--</option> <option value="D">D</option> <option value="E">E</option> <option value="F">F</option> <option value="G">G</option> </select> <select name="z" onchange="check(this.form);"> <option value="">--</option> <option value="H">H</option> <option value="I">I</option> <option value="J">J</option> <option value="K">K</option> </select> <textarea name="content" style="display:none;"></textarea> <input type="submit" value="送信"> </form> <script> // submit時にイベント実行をする関数 document.getElementById('form').onsubmit = function (event) { // 再読み込み防止 event.preventDefault(); // 入力フォームの内容を取得 let inputForm = document.getElementById('form').content.value; // 入力内容を画面に出力 document.getElementById('output').innerHTML = `${inputForm}`; } </script> <p id="output"></p> </body> </html>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
恐らくarrの選択時の組み合わせの部分かと思っておりますが値を出力はできておりません。
(arrの部分は2つのセレクトボックスの時に戻しております。)
補足
初歩的なことになるかと存じますが、ご教示いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー