Проблема в том, что вы не изменяете элементы после создания, вы просто добавляете текст во время создания:for (let i = 1; i <= 4; i++) { const select = document.getElementById('wpsl' + i) weapons.forEach(function(weapon) { const option = document.createElement('option') option.dataset.mats = weapon.bMats option.dataset.time = weapon.cTime option.value = weapon.type option.text = weapon.type select.appendChild(option) }) }
select
for
Лучший способ сделать это - использовать ваш массив, чтобы заполнить каждый выбор в его собственном выполнении цикла, таким образом вы можете создать один option
элемент, установить данные, значение, текст и добавить его в option
.
select
Проблема, которую я вижу в этом подходе, заключается в том, что вы не сможете добавлять или удалять select
s в будущем без изменения второго параметра в for
цикле, поэтому я бы рекомендовал использовать классы для селектора html, чтобы получить возможное количество select
s на странице, затем используйте этот массив, чтобы добавить option
s к каждому select
.
<select id="wpsl1" class="weapon-select"> ... </select> // HTML element
const select = Array.prototype.slice.call(document.querySelectorAll('.weapon-select'))
select.forEach(function(select) {
weapons.forEach(function(weapon) {
const option = document.createElement('option')
option.dataset.mats = weapon.bMats
option.dataset.time = weapon.cTime
option.value = weapon.type
option.text = weapon.type
select.appendChild(option)
})
})