#javascript #html #combobox
Вопрос:
У меня есть вопрос по манипуляциям с Javascipt DOM. Я написал HTML-страницу, содержащую два поля со списком. Первое поле со списком содержит список округов. Второе поле со списком содержит список городов в пределах округа, выбранного в первом поле со списком. И я не могу понять, как сделать следующее: всякий раз, когда значение в первом поле со списком меняется, второе поле со списком будет обновляться соответствующим образом. Я был бы признателен, если бы кто-нибудь мог мне помочь, я новичок в JS. Спасибо!
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос и включите комбинации в качестве кода в свой вопрос. Показав нам ваш код, мы сможем оценить уровень, на котором вы находитесь в настоящее время, и проясним детали, которые вы пытаетесь выяснить. Любой JavaScript, который показывает попытку заставить его работать, также настоятельно рекомендуется, так как мы будем знать, что вы уже пробовали. Включите эти вещи, и ваш ответ будет более сфокусированным.
Ответ №1:
Одно из решений заключается в следующем, но мы можем показать лучшие решения, если вы предоставите образец исходного кода.
var data = [
{ country: 'A', cities: ['A - 1', 'A - 2', 'A - 3']},
{ country: 'B', cities: ['B - 1', 'B - 2', 'B - 3']},
{ country: 'C', cities: ['C - 1', 'C - 2', 'C - 3']}
]
// Need to modify logic based on the data format.
const getCities = function(selectedCountry) {
const target = data.find(d => d.country === selectedCountry);
return target ? target.cities : [];
}
const changeCities = function (cities) {
let html = '<option value="-">Cities</option>'
for (let i in cities) {
html = '<option value="' cities[i] '">' cities[i] '</option>'
}
document.querySelector('#cities').innerHTML = html;
}
document.querySelector('#countries').addEventListener('change', (event) => {
const cities = getCities(event.target.value);
changeCities(cities);
});
<select id="countries">
<option value="-">Countries</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<select id="cities">
<option value="-">Cities</option>
</select>