Синтаксис выглядит немного не так. Использование .map()
вернет что-то, если оно удовлетворяет условию, но .map()
не работает на nodelist
, поэтому вам необходимо преобразовать его в array
.
.filter()
идеально подходит для чего-то подобного, но возвращает элемент HTML, а не ID, поэтому мы будем придерживаться .map()
.
Кроме того, вы просматриваете <select>
элементы, поэтому вам не нужно переходить к родительскому элементу. Наконец, чтобы избежать пустых элементов массива для несоответствующих элементов <select>
- вот где .filter()
было бы здорово - я помещаю идентификаторы в массив вместо объявления функции в переменной:
const selectsAvailable = [...document.getElementsByTagName("select")];
let countryList = [];
selectsAvailable.map(item => {
return item.options[0].value === 'Afghanistan' ? countryList.push(item.id) : ''
});
console.log("countryList>>>>>>", countryList);
<select id="countries">
<option value="Afghanistan">Afghanistan</option>
<option value="Africa">Africa</option>
</select>
<select id="somethingElse">
<option value="Something">Something</option>
<option value="Something">Something</option>
</select>