Невозможно получить событие изменения во втором списке выбора

#javascript

#javascript

Вопрос:

У меня есть этот список выбора, и он будет заполнять второй список на основе первого выбора списка. Прослушиванию изменений удается получать первый список выбора при каждом изменении, однако второй список выбора не изменяется соответствующим образом. Он просто останется в первом варианте и не изменится. Как мне прослушать изменения во втором списке выбора? Спасибо.

                 <form>
                    <div class="row">
                        <p>
                            <select name="types" id="exectrust_type">
                                <option value="">Select</option>
                                <option value="onese">1 Sole Executor</option>
                                <option value="twoje">2 Joint Executor</option>
                                <option value="threeje">3 Joint Executor</option>
                            </select>
                        </p>
                        <p>
                            <select name="exectrust_number" id="exectrust_number">
                            </select>
                        </p>

                        <p id="clauses"></p>
                    </div>
                </form>

var types = {
    onese: ['0 Backup', '1 Backup', '2 Backup', '2 Joint Backup'],
    twoje: ['0 Backup', '1 Backup'],
    threeje: ['0 Backup'],
};

var ett = document.getElementById('exectrust_type');
var etn = document.getElementById('exectrust_number');

ett.addEventListener('change', function () {
    var selected_option = types[this.value];

    while (etn.options.length > 0) {
        etn.options.remove(0);
    }

    Array.from(selected_option).forEach(function (el) {
        let option = new Option(el, el);
        etn.appendChild(option);
    });

    console.log(ett.value);
    console.log(etn[0].value);
});
  

Ответ №1:

Добавление прослушивателя событий во 2-й выбор должно быть в порядке.

https://jsfiddle.net/c0wsvab5/1/

 var types = {
  onese: ['0 Backup', '1 Backup', '2 Backup', '2 Joint Backup'],
  twoje: ['0 Backup', '1 Backup'],
  threeje: ['0 Backup'],
};

var ett = document.getElementById('exectrust_type');
var etn = document.getElementById('exectrust_number');

ett.addEventListener('change', function() {
  var selected_option = types[this.value];

  while (etn.options.length > 0) {
    etn.options.remove(0);
  }

  Array.from(selected_option).forEach(function(el) {
    let option = new Option(el, el);
    etn.appendChild(option);
  });

  console.log(ett.value);
  console.log(etn[0].value);
});

// Add event listener should be ok
etn.addEventListener('change', (event) => {
  alert(`The value of 2nd select value ${event.target.value}`);
});  
 <div class="row">
  <p>
    <select name="types" id="exectrust_type">
      <option value="">Select</option>
      <option value="onese">1 Sole Executor</option>
      <option value="twoje">2 Joint Executor</option>
      <option value="threeje">3 Joint Executor</option>
    </select>
  </p>
  <p>
    <select name="exectrust_number" id="exectrust_number">
    </select>
  </p>

  <p id="clauses"></p>
</div>