原生JavaScript實(shí)現(xiàn)動(dòng)態(tài)省市縣三級(jí)聯(lián)動(dòng)下拉框菜單實(shí)例代碼
像平時(shí)購(gòu)物選擇地址時(shí)一樣,通過(guò)選擇的省動(dòng)態(tài)加載城市列表,通過(guò)選擇的城市動(dòng)態(tài)加載縣區(qū)列表,從而可以實(shí)現(xiàn)省市縣的三級(jí)聯(lián)動(dòng),下面使用原生的JavaScript來(lái)實(shí)現(xiàn)這個(gè)功能:
先給大家展示下測(cè)試結(jié)果:
未做任何選擇時(shí):
選擇時(shí):
代碼如下所示:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>三級(jí)聯(lián)動(dòng)測(cè)試</title> <script src="jquery-2.1.4.min.js"></script> <script type="text/javascript"> //用來(lái)獲得option元素中selected屬性為true的元素的id function Get_Selected_Id(place){ var pro = document.getElementById(place); var Selected_Id = pro.options[pro.selectedIndex].id; return Selected_Id; //返回selected屬性為true的元素的id } //改變下一個(gè)級(jí)聯(lián)的option元素的內(nèi)容,即加載市或縣 function Get_Next_Place(This_Place_ID,Action){ var Selected_Id = Get_Selected_Id(This_Place_ID); //Selected_Id用來(lái)記錄當(dāng)前被選中的省或市的ID if(Action=='Get_city') //從而可以在下一個(gè)級(jí)聯(lián)中加載相應(yīng)的市或縣 Add_city(Selected_Id); else if(Action=='Get_country') Add_country(Selected_Id); } //用來(lái)存儲(chǔ)省市區(qū)的數(shù)據(jù)結(jié)構(gòu) var Place_dict = { "GuangDong":{ "GuangZhou":["PanYu","HuangPu","TianHe"], "QingYuan":["QingCheng","YingDe","LianShan"], "FoShan":["NanHai","ShunDe","SanShui"] }, "ShanDong":{ "JiNan":["LiXia","ShiZhong","TianQiao"], "QingDao":["ShiNan","HuangDao","JiaoZhou"] }, "HuNan":{ "ChangSha":["KaiFu","YuHua","WangCheng"], "ChenZhou":["BeiHu","SuXian","YongXian"] } }; //加載城市選項(xiàng) function Add_city(Province_Selected_Id){ $("#city").empty(); $("#city").append("<option>City</option>"); $("#country").empty(); $("#country").append("<option>Country</option>"); //上面的兩次清空與兩次添加是為了保持級(jí)聯(lián)的一致性 var province_dict = Place_dict[Province_Selected_Id]; //獲得一個(gè)省的字典 for(city in province_dict){ //取得省的字典中的城市 //添加內(nèi)容的同時(shí)在option標(biāo)簽中添加對(duì)應(yīng)的城市ID var text = "<option"+" id='"+city+"'>"+city+"</option>"; $("#city").append(text); console.log(text); //用來(lái)觀察生成的text數(shù)據(jù) } } //加載縣區(qū)選項(xiàng) function Add_country(City_Selected_Id){ $("#country").empty(); $("#country").append("<option>Country</option>"); //上面的清空與添加是為了保持級(jí)聯(lián)的一致性 var Province_Selected_ID = Get_Selected_Id("province"); //獲得被選中省的ID,從而方便在字典中加載數(shù)據(jù) var country_list = Place_dict[Province_Selected_ID][City_Selected_Id]; //獲得城市列表 for(index in country_list){ ////添加內(nèi)容的同時(shí)在option標(biāo)簽中添加對(duì)應(yīng)的縣區(qū)ID var text = "<option"+" id=\'"+country_list[index]+"\'>"+country_list[index]+"</option>"; $("#country").append(text); console.log(text); //用來(lái)觀察生成的text數(shù)據(jù) } } </script> </head> <body> <p>您的收貨地址:</p> <select id="province" onchange="Get_Next_Place('province','Get_city')"> <option id="Not_data1">Province</option> <option id="GuangDong" value="GuangDong">GuangDong</option> <option id="ShanDong" value="ShanDong">ShanDong</option> <option id="HuNan" value="HuNan">HuNan</option> </select> <select id="city" onchange="Get_Next_Place('city','Get_country')"> <option id="Not_data2">City</option> </select> <select id="country"> <option id="Not_data3">Country</option> </select> <br/> </body> </html>
當(dāng)然,省市縣三者都是動(dòng)態(tài)聯(lián)動(dòng)的,只要頂級(jí)的內(nèi)容發(fā)生改變,所有子級(jí)的內(nèi)容也會(huì)發(fā)生改變或被重置為City或Country.
以上所述是小編給大家分享的原生JavaScript實(shí)現(xiàn)動(dòng)態(tài)省市縣三級(jí)聯(lián)動(dòng)下拉框菜單實(shí)例代碼,希望對(duì)大家有所幫助。
- 原生javascript AJAX 三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)代碼
- 原生js實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)代碼分享
- vue.js模仿京東省市區(qū)三級(jí)聯(lián)動(dòng)的選擇組件實(shí)例代碼
- JavaScript實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)菜單實(shí)例代碼
- JS封裝的三級(jí)聯(lián)動(dòng)菜單(使用時(shí)只需要一行js代碼)
- 原生js三級(jí)聯(lián)動(dòng)的簡(jiǎn)單實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)一個(gè)省市區(qū)三級(jí)聯(lián)動(dòng)選擇框代碼分享
- JS三級(jí)聯(lián)動(dòng)代碼格式實(shí)例詳解
相關(guān)文章
JavaScript判斷textarea值是否為空并給出相應(yīng)提示
假如用戶沒(méi)有輸入數(shù)據(jù)則給出相應(yīng)提示,那么該如何來(lái)判斷呢?下面以判斷textarea值是否為空為例2014-09-09layui實(shí)現(xiàn)三級(jí)導(dǎo)航菜單
這篇文章主要為大家詳細(xì)介紹了layui實(shí)現(xiàn)三級(jí)導(dǎo)航菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07基于ts的動(dòng)態(tài)接口數(shù)據(jù)配置的詳解
這篇文章主要介紹了基于ts的動(dòng)態(tài)接口數(shù)據(jù)配置的詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12JS實(shí)現(xiàn)3D圖片旋轉(zhuǎn)展示效果代碼
這篇文章主要介紹了JS實(shí)現(xiàn)3D圖片旋轉(zhuǎn)展示效果代碼,可實(shí)現(xiàn)頁(yè)面元素的3D旋轉(zhuǎn)變換效果,涉及JavaScript動(dòng)態(tài)數(shù)學(xué)運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-09-09JavaScript文本框腳本編寫(xiě)的注意事項(xiàng)
這篇文章主要為大家介紹了JavaScript文本框腳本編寫(xiě)的注意事項(xiàng),幫助大家更好的編寫(xiě)javascript表單腳本,感興趣的小伙伴們可以參考一下2016-01-01JavaScript中的常見(jiàn)錯(cuò)誤與異常處理分析
這篇文章主要為大家信息介紹了JavaScript中的常見(jiàn)錯(cuò)誤與異常處理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01JavaScript實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圣誕游戲
圣誕節(jié)即將來(lái)臨,大家都在發(fā)圣誕樹(shù),小編今天就為大家介紹一個(gè)基于JavaScript實(shí)現(xiàn)的圣誕小游戲,文中的示例代碼簡(jiǎn)單易懂,感興趣的可以學(xué)習(xí)一下2021-12-12