Javascript 从对象中选择选项以在“下一个选择”中显示下一个选项

Javascript 从对象中选择选项以在“下一个选择”中显示下一个选项,javascript,select,Javascript,Select,试图做出3个选择 在第一个选项中,您选择地区,然后在第二个选项中,您可以从该地区选择城镇,然后在第三个选项中从该城镇选择酒店 区域选择工作正常,但城镇选择已中断,酒店也将中断。我想在没有jQuery的情况下完成这项工作 var region=document.getElementById('region'); var town=document.getElementById('town'); var hotel=document.getElementById('hotel'); var jso

试图做出3个选择

在第一个选项中,您选择地区,然后在第二个选项中,您可以从该地区选择城镇,然后在第三个选项中从该城镇选择酒店

区域选择工作正常,但城镇选择已中断,酒店也将中断。我想在没有jQuery的情况下完成这项工作

var region=document.getElementById('region');
var town=document.getElementById('town');
var hotel=document.getElementById('hotel');
var json={
“区域”:{
“区域1”:{
‘Town1_1’:[‘hotel1_1_1’、‘hotel1_1_2’],
‘Town1_2’:[‘hotel1_2_1’、‘hotel1_2_2’],
“Town1_3”:[“hotel1_3_1”、“hotel1_3_2”],
‘Town1_4’:[‘hotel1_4_1’、‘hotel1_4_2’],
},
“区域2”:{
‘Town2_1’:[‘hotel2_1_1’、‘hotel2_1_2’],
‘Town2_2’:[‘hotel2_2_1’、‘hotel2_2’],
‘Town2_3’:[‘hotel2_3_1’、‘hotel2_3_2’],
‘Town2_4’:[‘hotel2_4_1’、‘hotel2_4_2’],
‘Town2_5’:[‘hotel2_5_1’、‘hotel2_5_2’],
},
“区域3”:{
“Town3_1”:[“hotel3_1_1”、“hotel3_1_2”],
“Town3_2”:[“hotel3_2_1”、“hotel3_2_2”],
“Town3_3”:[“hotel3_3_1”、“hotel3_3_2”],
“Town3_4”:[“hotel3_4_1”、“hotel3_4_2”],
“Town3_5”:[“hotel3_5_1”、“hotel3_5_2”],
“Town3_6”:[“hotel3_6_1”、“hotel3_6_2”],
},
} 
}
var key=Object.key(json.regions);
对于(变量i=0;i

这应该可以做到:

const data={regions:{region1:{
“Town1_1”:[“hotel1_1_1”、“hotel1_1_2”],“Town1_2”:[“hotel1_2_1”、“hotel1_2_2”],“Town1_3”:[“hotel1_3_1”、“hotel1_3_2”],“Town1_4”:[“hotel1_4_1”、“hotel1_4_2”],},“region2”:{
“Town2_1”,“hotel2_1”,“hotel2_1”,“hotel2_2”,“Town2_2”,“hotel2_2”,“hotel2_2”,“hotel2_3”,“Town2_3”,“hotel2_3”,“hotel2_3”,“hotel2_4”,“hotel2_4”,“hotel2_4”],“Town2_5:[“hotel2_5”,“hotel2_1”,“hotel2”,“hotel2:3”,“hotel2:3”]{
“城镇3”2“:[“hotel3'1'1'1'1'1'3'1'1'1'3 3'3城市3 3'2':[“hotel3'1'2'1'2'1'2'2'3'3'3'1'3'1'3'1',“hotel3'3'1'1'1'1'1'1'3'1'3'1'3'1'3'3'1'3'1'3'1'3'1'3'3'1',“酒店3'3'3'3'1'3'3'1'1'1'3'1'3'1'3'3'3'3'1',“酒店3'3'3'3'3'3'3'3'1',“1'3'3'3'3'3'3'3'3'3'3'3'3'3'3'3'3'1',“3'3'1],}
}};
const mkopts=arr=>arr.map(r=>`${r}`)。join(“”),
sall=[…document.queryselectoral('select')];
sall.forEach((sel,i)=>{
如果(!i)sel.innerHTML=mkopts(Object.keys(data.regions));//首先用选项填充第一个select
如果(i{let nsel=sall[i+1];
sall[2]。innerHTML=“;//首先清除最后一个选择框选项
nsel.innerHTML=mkopts(//根据情况(->i)获得不同的选项:
i?Object.values(data.regions[sall[0].value][sall[1].value])
:Object.keys(data.regions[sall[0].value]);
!i&&nsel.onchange();
}
}
});
sall[0]。onchange()

var region=document.getElementById('region');
var town=document.getElementById('town');
var hotel=document.getElementById('hotel');
{“地区”的json={“地区”区域:{“地区1:{“区域1:{“区域1:{”区域1:{“区域1”1个地区的一个区域“,“hotel1'1 1 1'1,”1,”1,”1,”1,”1,”1,”,”,”,”地区1:{“区域1”地区1:{“1'1'1'1'1'1'1'1'1'1'1'1”、“1'1'1'1'1'1”、“酒店1'1'1'1'1'1'1'2””,“1'1'1'1'2”,,“1'1'1'2”,“1'2”,“1'1'1'2”,,”,”,”,”,”,”,”城市4“4:“4”4“““““““::[[[[[“1'1'4”4”4”4:[[[[“4”“1'1'1'1”4”4”4”“2_1”、“2_2_2”]、“Town2_3”:[“2_3_1”、“2_3_2”]、“Town2_4”:[“2_4_1”、“2_4_2”]“城市3”3“:{“城市3 3”3“,“城市3 3”3“:[“城市3 3”3“:{“城市3 3”1“:[“城市3”3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0 1,”城市2 5“,,“城市3 3 3 3”5“::[[“hotel2 2 2 0 0 0 0 0 0 1”、“2 0 0 0 0 0 0 0 1 1 1 1 1 1”、“3 3 3 0 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1,”3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2“],“Town3_6”:[“hotel3_6_1”,“hotel3_6_2”]}};
region.innerHTML=“”;
var regions=Object.keys(json.regions);
弗雷赫(
regionkey=>{
var option=document.createElement(“选项”);
option.textContent=regionkey;
地区。附加(选项);
}
);
changetown();
变革酒店();
函数changetown(){
var selectedregion=region[region.selectedIndex].textContent;
town.innerHTML=“”;
var towns=Object.keys(json.regions[selectedregion]);
弗雷奇镇(
汤基=>{
var option=document.createElement(“选项”);
option.textContent=townkey;
附加(选项);
}
);
变革酒店();
}
功能酒店(){
var selectedregion=region[region.selectedIndex].textContent;
var selectedtown=town[town.selectedIndex].textContent;
hotel.innerHTML=“”;
var hotels=json.regions[selectedregion][selectedtown];
弗雷奇酒店(
hotelvalue=>{
var option=document.createElement(“选项”);
option.textContent=hotelvalue;
附加酒店(可选);
}
);
}
乐趣