
| ホームページ | Pirikaで化学 | ブログ | 業務案内 | お問い合わせ | 
| Pirikaで化学トップ | 情報化学+教育 | HSP | 化学全般 | 
| 情報化学+教育トップ | 情報化学 | MAGICIAN | MOOC | プログラミング | 
| プログラミング・トップ | 親子で | JavaScript演習 | 化学系 | HSPiP用 | 
2021.2.11
フォームでセレクターの中身を設定する固定式では無く、ダイナミックに中身を入れ替える方法を覚えておきましょう。
  
最初のセレクターが選ばれると、2番目のセレクターの中身を入れ替えます。
<select name="genre" id="genre" onchange="createMenu(this.value)">
    <option disabled selected>タイプを選択してください</option>
    <option value="Alkane">アルカン</option>
    <option value="Alkene">アルケン</option>
    <option value="Alkyne">アルキン</option>
  </select><br>
  <select name="compList" id="compList" disabled>
    <option disabled selected>化合物を選択してください</option>
  </select>最初のセレクターの値を変更すると、createMenu関数へ飛びます。
2番目のセレクターはdisabledが指定さfれているので、選択する事ができません。  
const compMenu = 
{
    "Alkane": ["ヘキサン", "ヘプタン", "オクタン", "ノナン"],
    "Alkene": ["エチレン", "プロピレン", "ブチレン"],
    "Alkyne": ["アセチレン", "プロピン", "ブチン"]
};セレクターに設定するアイテムはこのように準備しておきます。
let option = document.createElement('option');
  option.innerHTML = '化合物を選択してください';
  option.defaultSelected = true;
  option.disabled = true;
  compList.appendChild(option); 後は、optionオブジェクトを作成して、innerHTMLを設定した後、appendChildとセレクターに追加していきます。
スクリプトの全体は次のようになります。
<SCRIPT language="JavaScript"><!--
const compMenu = 
{
    "Alkane": ["ヘキサン", "ヘプタン", "オクタン", "ノナン"],
    "Alkene": ["エチレン", "プロピレン", "ブチレン"],
    "Alkyne": ["アセチレン", "プロピン", "ブチン"]
};
function createMenu(selectGenre){
  
  let compList = document.getElementById('compList');
  compList.disabled = false;
  compList.innerHTML = '';
  let option = document.createElement('option');
  option.innerHTML = '化合物を選択してください';
  option.defaultSelected = true;
  option.disabled = true;
  compList.appendChild(option);  
  
  compMenu[selectGenre].forEach( menu => {
    let option = document.createElement('option');
    option.innerHTML = menu;
    compList.appendChild(option);  
  });    
} 
--></SCRIPT>Copyright pirika.com since 1999-   
Mail: yamahiroXpirika.com (Xを@に置き換えてください) メールの件名は[pirika]で始めてください。