[英]Create new select when somebody click in the option
有一個帶有國家列表的選擇。 選擇一個國家/地區后,應使用該國家/地區的城市列表創建新的選擇。
var selectCountries = document.getElementById("countries"); var options = selectCountries.options; for( var i = 0; i < options.length; i++ ){ options[i].addEventListener("click",funct ) } function funct(){ var mainDiv = document.getElementById("main"); var newCities = document.createElement("select"); main.appendChild(newCities); var newOptions = document.createElement("option"); newCities.appendChild(newOptions); }
<div id="main"> <select id="countries"> <option>France</option> <option>Germany</option> </select> </div>
我的建議是:創建一個<select id="cities">
然后將其隱藏,然后在選擇一個國家時,我們不必擔心<select id="cities">
存在。
對於DOM,您需要在<select id="countries">
下循環選項,以檢查選擇了哪個選項。 所以我創建了一個函數= getSelectedValue
我創建了一個var citiesConfigs
以保存所有城市,然后在選擇一個城市時,拉出所選縣以下的所有城市。
最后,在function = funct中 ,
獲得<select id="countries">
選定選項
獲取所選國家/地區下的所有城市,將其循環以創建<option>
然后附加到<select id="cities">
最后,顯示<select id="cities">
var selectCountries = document.getElementById("countries"); var options = selectCountries.options; for( var i = 0; i < options.length; i++ ){ options[i].addEventListener("click",funct ) } var citiesConfigs = {'france': ['CityA', 'CityB'], 'germany':['CityC','CityD']} function getSelectedValue(elementId) { var elt = document.getElementById(elementId); if (elt.selectedIndex == -1) return null; return elt.options[elt.selectedIndex].value; } function funct(){ var mainDiv = document.getElementById("main"); var selectedCity = document.getElementById("cities") selectedCity.innerHTML = '' citiesConfigs[getSelectedValue('countries')].forEach(function(city){ let newOption = document.createElement("option"); newOption.value = city newOption.text = city selectedCity.appendChild(newOption); }) selectedCity.style.display = '' }
<div id="main"> <select id="countries"> <option value="france">France</option> <option value="germany">Germany</option> </select> <select id="cities" style="display:none"></select> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.