• ベストアンサー

HTML 同じ項目のドロップダウンを複数個所に

htmlを勉強中の初心者です。 同じ項目のドロップダウンメニューを複数個所に作成することを考えています。 同じ項目の<select>タグを複数個所に張り付けることで、目的のことができました。しかし、ドロップダウンの項目(内容、項目数)を変更することがあり、その都度全個所を変更することを避け、項目のデータは一つにしておきたいと考えています。 このようなことを行うことは可能でしょうか? ご存じの方教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<!DOCTYPE hrml> <meta charset="utf-8"> <title></title> <style></style> <body> <ol>  <li><select id="A"></select>  <li><select id="B"></select>  <li><select id="C"></select> <ol> <script> 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], {label:"ABC", options:[["ghi",3],["jkl",4]]}); let s = [A, document.getElementById ('B'), document.querySelector ('#C')]; s.forEach (e=> e.appendChild (a.cloneNode (true))); </script>

pikopiko29
質問者

お礼

ありがとうございました。 やりたいことができました。 ソースコードについても勉強していきたいと思います。

pikopiko29
質問者

補足

ご回答ありがとうございます。 内容を理解するにはまだまだ勉強が必要ですが、やりたいことができました。実際のソースにも組み込むことができました。 ありがとうございました。 可能であればあと一点教えていただけないでしょうか? ドロップダウンで選択した項目に基づいた、文字列および数字を得たいのですが、どのようにすればよいでしょうか。がんばってみましたが、できませんでした。 ドロップダウン 文字列 数字 abc abc 123 def def 456 ABC ABC 789 abcを選択すると「abc」「123」が隣のセルにそれぞれ表示されるような形を考えています。 お手数をおかけしますが、可能であれば教えていただけないでしょうか?

その他の回答 (1)

回答No.2

最初の質問とは違うようです。再質問なさることをお勧めします。 (受け売りですが)良き質問には、良き回答が得られます。 今のあなたの質問の仕方はよろしくない。

pikopiko29
質問者

補足

コメントありがとうございます。 大変失礼しました。 再質問いたします。

関連するQ&A