js的联动菜单实现.docx

上传人:b****7 文档编号:9538458 上传时间:2023-02-05 格式:DOCX 页数:11 大小:19.33KB
下载 相关 举报
js的联动菜单实现.docx_第1页
第1页 / 共11页
js的联动菜单实现.docx_第2页
第2页 / 共11页
js的联动菜单实现.docx_第3页
第3页 / 共11页
js的联动菜单实现.docx_第4页
第4页 / 共11页
js的联动菜单实现.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

js的联动菜单实现.docx

《js的联动菜单实现.docx》由会员分享,可在线阅读,更多相关《js的联动菜单实现.docx(11页珍藏版)》请在冰豆网上搜索。

js的联动菜单实现.docx

js的联动菜单实现

 

JS联动菜单类

By 没有鱼的水发表于2007-8-42:

54:

00 

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">

 

 JS联动下拉框

 

 

 

 

 functionCLASS_LIANDONG_YAO(array)

 {

  //数组,联动的数据源

  this.array=array;

  this.indexName='';

  this.obj='';

  //设置子SELECT

 //参数:

当前onchange的SELECTID,要设置的SELECTID

     this.subSelectChange=function(selectName1,selectName2)

  {

  //try

  //{

   varobj1=document.all[selectName1];

   varobj2=document.all[selectName2];

   varobjName=this.toString();

   varme=this;

 

   obj1.onchange=function()

   {

    

    me.optionChange(this.options[this.selectedIndex].value,obj2.id)

   }

  }

  //设置第一个SELECT

 //参数:

indexName指选中项,selectName指select的ID

  this.firstSelectChange=function(indexName,selectName) 

  {

  this.obj=document.all[selectName];

  this.indexName=indexName;

  this.optionChange(this.indexName,this.obj.id)

  }

 

 //indexName指选中项,selectName指select的ID

  this.optionChange=function(indexName,selectName)

  {

   varobj1=document.all[selectName];

   varme=this;

   obj1.length=0;

   obj1.options[0]=newOption("请选择",'');

   for(vari=0;i

   {

   

    if(this.array[i][1]==indexName)

    {

    //alert(this.array[i][1]+""+indexName);

     obj1.options[obj1.length]=newOption(this.array[i][2],this.array[i][0]);

    }

   }

  }

  

 }

 

 

 

    

  

   

  

  

   请选择

  

  

  

 

 

 

 

 

 //例子1-------------------------------------------------------------

 //数据源

 vararray=newArray();

 array[0]=newArray("华南地区","根目录","华南地区");//数据格式ID,父级ID,名称

 array[1]=newArray("华北地区","根目录","华北地区");

 array[2]=newArray("上海","华南地区","上海");

 array[3]=newArray("广东","华南地区","广东");

 //--------------------------------------------

 //这是调用代码

 varliandong=newCLASS_LIANDONG_YAO(array)//设置数据源

 liandong.firstSelectChange("根目录","s1");//设置第一个选择框

 liandong.subSelectChange("s1","s2");//设置子级选择框

 

 

 

 

js联动菜单

2009-01-0919:

44

这是一个完整的JS连动实例。

联动下拉菜单

--

functionsele(op){

switch(op){

case"湖北":

vararr=newArray("武汉","宜昌","黄石","武穴","十堰","天门","神龙架");break;

case"湖南":

vararr=newArray("长沙","株洲","怀化");break;

case"河南":

vararr=newArray("洛阳","濮阳");break;

case"河北":

vararr=newArray("秦皇岛","沧州");break;

}

document.form.city.options.length=1

for(i=0;i

varobj=newOption()

obj.text=arr[i]

obj.value=arr[i]

document.form.city.options[document.form.city.options.length]=obj

}

}

//-->

--请选择--

湖北

湖南

河南

河北

--请选择--

 

教你自己动手制作JS二级联动菜单

2009-03-3018:

19

在网上有很多JS的二级联动菜单,很多人都只是拿过来用就完了

而且那些联动菜单都是静态的,不便于修改,今天教大家用数据库自己制作二级联动菜单

首先我们新建两个数据库.

一个是pro表,字段很简单.一个ID自动编号.一个PRO省份名称,一个ADDTIME录入时间

另一个是city表,一个ID自动编号,一个PROID省份ID,一个CITY城市名称.,一个ADDTIME录入时间

在网页中,我们先用一个select选择框将省份载入

  请选择...

  <%setrs=Server.CreateObject("ADODB.Recordset")

sql="select*fromproorderbyaddtimedesc"

rs.opensql,conn,1,1

whilenotrs.eof%>

       "><%=rs("pro")%>

<%rs.movenext

wend%>

     

现在省份的选择框已经做好了,当我们选择的时候触发changepro函数来实现城市选择的变更

城市的选择框就只需要写

     

下面我们来写changepro函数

首先我们把city表的数据读出来

<%sql="select*fromcityorderbyaddtimedesc"

setrs=server.createobject("ADODB.Recordset")

rs.opensql,conn,1,1%>

然后将读出来的值写到JS的二维数组里面

varonecount;

onecount=0;

subcat=newArray();

<%count=0

dowhilenotrs.eof%>

subcat[<%=count%>]=newArray("<%=trim(rs("city"))%>","<%=trim(rs("proid"))%>","<%=trim(rs("cityid"))%>");

       <%count=count+1

       rs.movenext

       loop

       rs.close

       setrs=nothing%>

onecount=<%=count%>;

functionchangepro(id)

   {

   document.addform.cityid.length=0;

   varproid=id;

   vari;

   document.addform.cityid.options[0]=newOption('请选择城市','');

   for(i=0;i

       {

           if(subcat[i][1]==proid)

           {

               document.addform.cityid.options[document.addform.cityid.length]=newOption(subcat[i][0],subcat[i][2]);

           }       

       }

       

   }

在这里我们定义了一个subcat的二维数组.当然.你如果需要做多个联动的话也可以扩展成三维数组

subcat定义了['城市','所属省份的ID','城市ID']

然后获取数据的长度onecount=<%=count%>;

接下来将cityid选择框清空document.addform.cityid.length=0;

接着我们就要向cityid里写入对应的城市名称了

我们向changepro函数传递选中的省份的ID,将它赋值给proid

第一句写入请选择城市document.addform.cityid.options[0]=newOption('请选择城市','');这句可要也可不要

然后定义一个I循环.用onecount来限制循环次数

if(subcat[i][1]==proid)如果数组中的省份名称和我们选择的省份ID相同

就把该个数组项中的城市ID和城市名称写入到cityid中去

document.addform.cityid.options[document.addform.cityid.length]=newOption(subcat[i][0],subcat[i][2]);

到这里.我们的二级联动菜单也就完成了.

如果还要做三级城市呢.只需要将cityid那里在加一个onchangecity函数.

再如上将三级城市名称和ID读出来放入另一个数组里面,用相同的方法写进去就可以了

这样做出来的联动菜单是根据数字ID来控制的.你的地址栏也就不会出现city.asp?

id='成都'这样的语句了,同时也避免了两个同名城市造成的数据的混淆

而且还可以通过修改时间来实现排序

以上只是一个范例,希望大家可以举一反三,实现更多的联动效果,这些效果在做数据统计系统的时候非常有用

 

JS实现无刷新联动菜单(select)的方法

2009-04-1110:

20

所谓联动菜单,就是后一个下拉框的选项是根据前一个下拉框被选中的值来决定的,一个典型的应用就是省市联动菜单了,市的下拉选项是根据你选了哪个省来决定的,类似的需求我们经常遇到,相信许多新手都被这个问题困扰过。

其实,联动菜单的实现原理非常简单,本文详细介绍了联动菜单的实现方式,知道了原理,我们可以很容易地制作从XML、数据库加载的无限级联动菜单。

联动菜单的实现方法:

1、确定数据格式

首先,我们介绍一下创建Option的语法:

varnewOption=newOption(optionText,optionvalue);

根据上面的语法,我们知道select选项分optionText和optionvalue两个内容,optionText即下拉框中我们看到的选项,而optionvalue则是提交的实际值。

比如一个选项我们看到的是“北京”,而实际提交的值是“010”。

为了保持一致,我们确定选项的格式为:

{txt:

"选项名",val:

"选项值"}

那么一个选项组则是:

varchildArr=[];

childArr['父选项值1']=[

{txt:

"选项名1",val:

"选项值1"},

{txt:

"选项名2",val:

"选项值2"},

{txt:

"选项名3",val:

"选项值3"},

...

{txt:

"选项名n",val:

"选项值n"}

]

childArr['父选项值2']=[

{txt:

"选项名1",val:

"选项值1"},

{txt:

"选项名2",val:

"选项值2"},

{txt:

"选项名3",val:

"选项值3"},

...

{txt:

"选项名n",val:

"选项值n"}

]

其中“父选项值”是父下拉列表选中的值。

注意:

[]和{}中的值是以“,”(逗号)分隔的,但是最后一个值后面不能有“,”(逗号),否则语法错误,PHP程序员要特别注意!

2、根据传入的数组创建选项列表

for(vari=0;i

{

selectObj.options[i]=newOption(optionList[i].txt,optionList[i].val);

}

3、在设置选项之前,我们需要先将原有选项清空

functionremoveOptions(selectObj)

{

if(typeofselectObj!

='object')

{

selectObj=document.getElementById(selectObj);

}

//原有选项计数

varlen=selectObj.options.length;

for(vari=0;i

{

//移除当前选项

selectObj.options[0]=null;

}

}

注意,这里不是用selectObj.options[i]而是用的selectObj.options[0],由于在options[0]删除后,后面的选项就会补上,因此,我们只需要selectObj.options[0]=null。

4、设置一个提示选择项和默认选择项

通常我们在下拉列表中会设置一个提示选择项,如:

“请选择城市”,这个选项值为空,作用只是提示用户执行选择操作。

另外,下拉列表也需要能够设置默认选择项,即在页面加载的时候,设置选中状态的项目。

完整代码如下:

Javascript:

--

/**说明:

将指定下拉列表的选项值清空

*作者:

S()*

*@param{String||Object]}selectObj目标下拉选框的名称或对象,必须

*/

functionremoveOptions(selectObj){    

if(typeofselectObj!

='object'){        

selectObj=document.getElementById(selectObj);}     //原有选项计数   

varlen=selectObj.options.length;     

for(vari=0;i

//移除当前选项       

selectObj.options[0]=null;   

}}

/**说明:

设置传入的选项值到指定的下拉列表中

*作者:

S()*

*@param{String||Object]}selectObj目标下拉选框的名称或对象,必须

*@param{Array}optionList选项值设置格式:

[{txt:

'北京',val:

'010'},

*{txt:

'上海',val:

'020'}],必须

*@param{String}firstOption第一个选项值,如:

“请选择”,可选,值为空

*@param{String}selected默认选中值,可选

*/

functionsetSelectOption(selectObj,optionList,firstOption,selected){    

if(typeofselectObj!

='object'){        

selectObj=document.getElementById(selectObj);    

}     //清空选项    

removeOptions(selectObj);     //选项计数    

varstart=0;         //如果需要添加第一个选项    

if(firstOption){        

selectObj.options[0]=newOption(firstOption,'');   //选项计数从1开始        

start++;    

}     

varlen=optionList.length;     

for(vari=0;i

//设置option        

selectObj.options[start]=newOption(optionList[i].txt,optionList[i].val);         

//选中项        

if(selected==optionList[i].val){            

selectObj.options[start].selected=true;        

}         

//计数加1        

start++;

}}//-->

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1