成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析JS實(shí)現(xiàn)無刷新聯(lián)動菜單技巧

開發(fā) 前端
這里向大家描述一下JS實(shí)現(xiàn)無刷新聯(lián)動菜單(select)的方法,所謂聯(lián)動菜單,就是后一個(gè)下拉框的選項(xiàng)是根據(jù)前一個(gè)下拉框被選中的值來決定的。

本文向大家簡單介紹一下什么是聯(lián)動菜單,以及JS實(shí)現(xiàn)無刷新聯(lián)動菜單(select)的方法,其實(shí),聯(lián)動菜單的實(shí)現(xiàn)原理非常簡單,本文詳細(xì)介紹了聯(lián)動菜單的實(shí)現(xiàn)方式,知道了原理,我們可以很容易地制作從XML、數(shù)據(jù)庫加載的無限級聯(lián)動菜單。

JS實(shí)現(xiàn)無刷新聯(lián)動菜單(select)的方法

所謂聯(lián)動菜單,就是后一個(gè)下拉框的選項(xiàng)是根據(jù)前一個(gè)下拉框被選中的值來決定的,一個(gè)典型的應(yīng)用就是省市聯(lián)動菜單了,市的下拉選項(xiàng)是根據(jù)你選了哪個(gè)省來決定的,類似的需求我們經(jīng)常遇到,相信許多新手都被這個(gè)問題困擾過。

  其實(shí),聯(lián)動菜單的實(shí)現(xiàn)原理非常簡單,本文詳細(xì)介紹了聯(lián)動菜單的實(shí)現(xiàn)方式,知道了原理,我們可以很容易地制作從XML、數(shù)據(jù)庫加載的無限級聯(lián)動菜單。

聯(lián)動菜單的實(shí)現(xiàn)方法:

1.確定數(shù)據(jù)格式:

  首先,我們介紹一下創(chuàng)建Option的語法:

  Code:

  1.   varnewOption=newOption(optionText,optionvalue);  
  2.  

  根據(jù)上面的語法,我們知道select選項(xiàng)分optionText和optionvalue兩個(gè)內(nèi)容,optionText即下拉框中我們看到的選項(xiàng),而optionvalue則是提交的實(shí)際值。比如一個(gè)選項(xiàng)我們看到的是“北京”,而實(shí)際提交的值是“010”。

  為了保持一致,我們確定選項(xiàng)的格式為:

  Code:

  1.   {txt:"選項(xiàng)名",val:"選項(xiàng)值"}  
  2.  

  那么一個(gè)選項(xiàng)組則是:

  Code:

  1. varchildArr=[];  
  2. childArr['父選項(xiàng)值1']=[  
  3.   {txt:"選項(xiàng)名1",val:"選項(xiàng)值1"},  
  4.   {txt:"選項(xiàng)名2",val:"選項(xiàng)值2"},  
  5.   {txt:"選項(xiàng)名3",val:"選項(xiàng)值3"},  
  6.   ...  
  7.   {txt:"選項(xiàng)名n",val:"選項(xiàng)值n"}  
  8. ]  
  9. childArr['父選項(xiàng)值2']=[  
  10.   {txt:"選項(xiàng)名1",val:"選項(xiàng)值1"},  
  11.   {txt:"選項(xiàng)名2",val:"選項(xiàng)值2"},  
  12.   {txt:"選項(xiàng)名3",val:"選項(xiàng)值3"},  
  13.   ...  
  14.   {txt:"選項(xiàng)名n",val:"選項(xiàng)值n"}  
  15. ]  
  16.  

 其中“父選項(xiàng)值”是父下拉列表選中的值。

  注意:[]和{}中的值是以“,”(逗號)分隔的,但是***一個(gè)值后面不能有“,”(逗號),否則語法錯(cuò)誤,PHP程序員要特別注意!!!#p#

2.根據(jù)傳入的數(shù)組創(chuàng)建選項(xiàng)列表:

  Code:

  1. for(vari=0;i<len;i++)  
  2. {  
  3.   selectObj.options[i]=newOption(optionList[i].txt,optionList[i].val);  
  4. }  
  5.  

 3.在設(shè)置選項(xiàng)之前,我們需要先將原有選項(xiàng)清空:

  Code:

  1. functionremoveOptions(selectObj)  
  2. {  
  3.   if(typeofselectObj!='object')  
  4.   {  
  5.     selectObj=document.getElementById(selectObj);  
  6.   }  
  7.   //原有選項(xiàng)計(jì)數(shù)  
  8.   varlen=selectObj.options.length;  
  9.   for(vari=0;i<len;i++)  
  10.   {  
  11.     //移除當(dāng)前選項(xiàng)  
  12.     selectObj.options[0]=null;  
  13.   }  
  14. }  
  15.  

   注意,這里不是用selectObj.options[i]而是用的selectObj.options[0],由于在options[0]刪除后,后面的選項(xiàng)就會補(bǔ)上,因此,我們只需要selectObj.options[0]=null。

4.設(shè)置一個(gè)提示選擇項(xiàng)和默認(rèn)選擇項(xiàng):

  通常我們在下拉列表中會設(shè)置一個(gè)提示選擇項(xiàng),如:“請選擇城市”,這個(gè)選項(xiàng)值為空,作用只是提示用戶執(zhí)行選擇操作。

  另外,下拉列表也需要能夠設(shè)置默認(rèn)選擇項(xiàng),即在頁面加載的時(shí)候,設(shè)置選中狀態(tài)的項(xiàng)目。

  完整代碼如下:

  Javascript:

  1. <scriptlanguagescriptlanguage="JavaScript"
  2. type="text/javascript"> 
  3. <!--   
  4. /**說明:將指定下拉列表的選項(xiàng)值清空   
  5. *作者:CodeBit.cn(http://www.CodeBit.cn) *   
  6. *@param{String||Object]}selectObj目標(biāo)下拉選框的名稱或?qū)ο螅仨殹? 
  7. */  
  8. functionremoveOptions(selectObj){    
  9. if(typeofselectObj!='object'){      
  10. selectObj=document.getElementById(selectObj);} //原有選項(xiàng)計(jì)數(shù)    
  11. varlen=selectObj.options.length;     
  12. for(vari=0;i<len;i++)  {      
  13. //移除當(dāng)前選項(xiàng)      
  14. selectObj.options[0]=null;    
  15. }}  
  16. /**說明:設(shè)置傳入的選項(xiàng)值到指定的下拉列表中   
  17. *作者:CodeBit.cn(http://www.CodeBit.cn) *   
  18. *@param{String||Object]}selectObj目標(biāo)下拉選框的名稱或?qū)ο螅仨殹? 
  19. *@param{Array}optionList選項(xiàng)值設(shè)置格式:[{txt:'北京',val:'010'},  
  20. *{txt:'上海',val:'020'}],必須  
  21. *@param{String}firstOption***個(gè)選項(xiàng)值,如:“請選擇”,可選,值為空  
  22. *@param{String}selected默認(rèn)選中值,可選   
  23. */  
  24. functionsetSelectOption(selectObj,optionList,
  25. firstOption,selected){    
  26. if(typeofselectObj!='object'){      
  27. selectObj=document.getElementById(selectObj);    
  28. }   //清空選項(xiàng)    
  29. removeOptions(selectObj);   //選項(xiàng)計(jì)數(shù)    
  30. varstart=0;     //如果需要添加***個(gè)選項(xiàng)    
  31. if(firstOption){      
  32. selectObj.options[0]=newOption(firstOption,'');
  33.   //選項(xiàng)計(jì)數(shù)從1開始      
  34. start++;    
  35. }     
  36. varlen=optionList.length;     
  37. for(vari=0;i<len;i++){      
  38. //設(shè)置option      
  39. selectObj.options[start]=newOption(optionList[i].txt,
  40. optionList[i].val);       
  41. //選中項(xiàng)      
  42. if(selected==optionList[i].val){        
  43. selectObj.options[start].selected=true;      
  44. }       
  45. //計(jì)數(shù)加1      
  46. start++;  
  47. }} //--> 
  48. </script> 
  49.  

 #p#示例代碼:

  HTML:

  1. <scriptlanguagescriptlanguage="JavaScript"
  2. type="text/javascript">   
  3. varcityArr=[];  
  4. cityArr['江蘇省']=[  
  5. {txt:'南京',val:'南京'},  
  6. {txt:'無錫',val:'無錫'},      
  7. {txt:'徐州',val:'徐州'},      
  8. {txt:'蘇州',val:'蘇州'},      
  9. {txt:'南通',val:'南通'},      
  10. {txt:'淮陰',val:'淮陰'},      
  11. {txt:'揚(yáng)州',val:'揚(yáng)州'},      
  12. {txt:'鎮(zhèn)江',val:'鎮(zhèn)江'},      
  13. {txt:'常州',val:'常州'}    
  14. ];  
  15. cityArr['浙江省']=[      
  16. {txt:'杭州',val:'杭州'},       
  17. {txt:'寧波',val:'寧波'},      
  18. {txt:'溫州',val:'溫州'},      
  19. {txt:'湖州',val:'湖州'}    
  20. ];   
  21. functionsetCity(province){      
  22. setSelectOption('city',cityArr[province],'-請選擇-');  
  23. }   
  24. </script>   
  25. <selectnameselectname="province"id="province"
  26. onchange="if(this.value!='')  
  27. setCity(this.options[this.selectedIndex].value);">    
  28. <optionvalueoptionvalue="">-請選擇-</option>    
  29. <optionvalueoptionvalue="江蘇省">江蘇省</option>    
  30. <optionvalueoptionvalue="浙江省">浙江省</option> 
  31. </select> 
  32. 省   
  33. <selectnameselectname="city"id="city">    
  34. <optionvalueoptionvalue="">-請選擇-</option> 
  35. </select> 
  36. 市  
  37.  

   根據(jù)這個(gè)結(jié)構(gòu),設(shè)置好數(shù)據(jù),我們可以很容易的實(shí)現(xiàn)無限級聯(lián)動菜單。或者我們也可以將數(shù)據(jù)存放在文件或數(shù)據(jù)庫中,通過Ajax獲取數(shù)據(jù)。

【編輯推薦】

  1. JavaScript對象的定義及創(chuàng)建實(shí)例
  2. 常用JavaScript內(nèi)部對象
  3. JavaScript中圖像處理技巧
  4. JavaScript函數(shù)中arguments對象
  5. Javascript中CSS屬性float特殊寫法

 

責(zé)任編輯:佚名 來源: tech.ddvip.com
相關(guān)推薦

2017-07-28 17:12:52

綠盟科技

2017-03-29 13:27:20

互聯(lián)網(wǎng)

2012-04-12 10:19:08

Ajax.NET

2021-03-12 16:25:17

技巧vue頁面刷新

2011-12-09 12:37:06

2010-01-08 18:31:45

VB.NET歷史菜單

2013-12-02 15:25:38

jQuery插件

2009-06-26 15:17:27

jQuery

2009-12-09 16:42:55

PHP二級聯(lián)動菜單

2010-01-27 10:21:00

Android菜單

2024-07-11 10:38:02

2009-11-24 16:09:44

PHP Ajax

2009-12-30 17:19:09

Silverlight

2011-06-09 15:44:29

Spring

2025-06-23 04:00:00

接口SpringToken

2015-03-26 13:14:53

javascriptjs callback實(shí)現(xiàn)調(diào)用

2019-12-10 09:44:58

云計(jì)算阿里云谷歌

2012-04-13 10:05:24

ASP.NET

2012-05-02 14:41:04

jQuery

2011-08-11 16:31:08

XCode
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www.国产91| 99re99| 日韩精品一区二区三区四区视频 | 国产欧美精品一区二区色综合朱莉 | 中日韩欧美一级片 | 午夜免费观看体验区 | 国产韩国精品一区二区三区 | 久久88| 精品一区二区三区在线观看 | 国产一区91精品张津瑜 | 日韩欧美高清 | 99re在线视频 | 欧美亚州| 一级电影免费看 | 日韩精品免费视频 | 超碰在线网站 | av在线播放免费 | 中文字幕亚洲一区 | 久久久精品一区 | 欧美中文字幕一区二区三区亚洲 | 亚洲成人精品一区 | 日韩精品久久久久久 | 九九热精品视频 | 中文字幕一区二区三区不卡在线 | 午夜欧美日韩 | 成年网站在线观看 | 亚洲精品福利在线 | 一区日韩| 黄色在线观看网站 | 久久精品亚洲一区二区三区浴池 | 国产精品精品久久久 | 欧美在线视频一区二区 | 成人a免费 | 天天草天天干 | 日韩精品视频一区二区三区 | 综合五月婷 | 国产小视频在线 | 性国产丰满麻豆videosex | 久久久久国产一区二区 | 亚洲精品一区二区三区蜜桃久 | 亚洲一区久久久 |