- 締切済み
HTML ドロップダウン~のデータ取得の仕方
このサイトで勉強させてもらいながら、下記の「やりたいこと」を目指して、下記のソースで表にドロップダウンを組み込んだものまで作成することができました。 その次のドロップダウンからのデータ取得、その後のチェックボックスを使った選択されたものだけが計算される方法でつまずいてしまいました。 やれる方法をご存じの方教えていただけないでしょうか。 よろしくお願いします。 (やりたいこと) 1.列AAAにあるドロップダウンリストを選択すると列BBBにAAAとあらかじめ関連付けられた数値が入ります。列CCCとDDDはinput(入力欄です)。 2.1行目(1.TM)とチェックボックスで選択された行のみ列AAAの文字列と列BBB~列DDDの数値が計算されたものが、上の計算ボタンの横のBOXに表示される。 (計算) チェックされた行ごとで「BBB*(CCC+DDD)」を計算し、1.TMとチェックされた行で「TM行の計算結果/(チェックされた行の計算結果の集計))%」をそれぞれ計算し、計算結果に「1.TM:〇〇%、2,bbb:△△%」と表示させる。 ーーーー現在まで記載したソースコードーーーー <!DOCTYPE hrml> <meta charset="utf-8"> <title></title> <style></style> <body> <INPUT type="button" value=" 計算 " onClick="calc() "> <INPUT name="y" size=30><BR> <table border="1"> <tr> <td></td> <td>AAA</td> <td>BBB</td> <td>CCC</td> <td>DDD</td> </tr> <tr> <td></td> <td>1.TM</td> <td><INPUT name="a_name" size=10 value ="300"></td> <td><INPUT name="a_int" size=10 value ="1"></td> <td><INPUT name="a_Hnum" size=10 value ="1"></td> </tr> <tr> <td><input type="checkbox" ></td> <td>2.<select id="A"></select></td> <td><INPUT name="b_mw" size=10 value ="80"></td> <td><INPUT name="b_int" size=10 value ="0.2"></td> <td><INPUT name="b_Hnum" size=10 value ="2"></td> </tr> <tr> <td><input type="checkbox" ></td> <td>3.<select id="B"></select></td> <td><INPUT name="h_mw" size=10></td> <td><INPUT name="h_int" size=10></td> <td><INPUT name="h_Hnum" size=10></td> </tr> <tr> <td><input type="checkbox" ></td> <td>4.<select id="C"></td> <td><INPUT name="i_mw" size=10></td> <td><INPUT name="i_int" size=10></td> <td><INPUT name="i_Hnum" size=10></td> </tr> </table> <script> function calc() { document.y.value = A; } function isObject (arg) { return arg !== null && 'object' === typeof arg && 'Object' === arg.constructor.name; } function createOptions (...args) { const vaild = ['string', 'number'], fgm = document.createDocumentFragment (); for (let arg of args) { if (null === arg) continue; let parent = fgm; //オブジェクト型でラベルがあれば optgroup と見なす if (isObject (arg)) { let { label, options } = arg; if (label) { let optgroup = document.createElement ('optgroup'); optgroup.label = label; parent = parent.appendChild (optgroup); } arg = Array.isArray (options) ? options: [options]; } else arg = [arg]; //配列ならば parent.append (...arg.map (a=> Array.isArray (a) ? new Option (...a): new Option (a, a))); } return fgm; } //_________________ let a = createOptions ("選択して下さい", ["abc", 1], ["def",2], ["nnn",3]); let s = [A, document.getElementById ('B'), document.querySelector ('#C')]; s.forEach (e=> e.appendChild (a.cloneNode (true))); </script>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- babu_baboo
- ベストアンサー率51% (268/525)
- babu_baboo
- ベストアンサー率51% (268/525)
お礼
ご回答ありがとうございます。 いつもありがとうございます。 すぐ理解はできていませんが、勉強していきたいと思います。 ありがとうございます。