@ART4

Как select'ы динамически заполнять option'ами?

Есть массив:
let data = [
		{id: '1', label: 'ru', country: 'Россия', citys: [
			{id: '1-1', city: 'Москва'},
			{id: '1-2', city: 'Санк-Петербург'},
			{id: '1-3', city: 'Сочи'},
			{id: '1-4', city: 'Анапа'}
		]},
		{id: '2', label: 'by', country: 'Беларусь', citys: [
			{id: '2-1', city: 'Минск'},
			{id: '2-2', city: 'Гомель'},
			{id: '2-3', city: 'Витебск'}
		]},
		{id: '3', label: 'uk', country: 'Украина', citys: [
			{id: '3-1', city: 'Киев'},
			{id: '3-2', city: 'Львов'},
			{id: '3-3', city: 'Одеса'}
		]}
	];

	data.forEach(function(entry) {
	    console.log(entry);
	});


5d945174e21af137137761.png



Он имеет Страны, в каждой стране имеются свои Города. Как вывести их в select, чтобы можно было выбрать страну, а потом город который относится к ней?
  • Вопрос задан
  • 1029 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
<select id="country"></select>
<select id="city"></select>

const countryEl = document.querySelector('#country');
const cityEl = document.querySelector('#city');

countryEl.innerHTML = data.map(n => `<option value="${n.id}">${n.country}</option>`).join('');

countryEl.addEventListener('change', function() {
  cityEl.innerHTML = data
    .find(n => n.id === this.value)
    .cities
    .map(n => `<option value="${n.id}">${n.city}</option>`)
    .join('');
});

countryEl.dispatchEvent(new Event('change'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Qwes
А как решается проблема с многовложенным списком например в 4 ступени (страна - город - район - дом), что то ну очень много получается если так... может есть какой способ быстрее?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы