首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

asp+javescirpt 怎么作三级分类下拉选择菜单

2012-04-22 
asp+javescirpt 如何作三级分类下拉选择菜单?我有一个asp+javescript的代码,当用下拉菜单选择某一个省份以

asp+javescirpt 如何作三级分类下拉选择菜单?
我有一个asp+javescript   的代码,当用下拉菜单选择某一个省份以后   二级下拉菜单   会出现   相应的   城市名称   供选择,   现在我我想详细到   三级即   分类到   城镇.
请问该如何写这样的代码?
数据库又该如何设计呢?

最好能提供源代码.(我现在用的是网上某商城的代码.)

部分代码如下:

  <tr     bgcolor=ffffff>
            <td   align= "right "> 所在城市: </td>
            <td>  
                <select   size= "1 "   class= "wenbenkuang "   name= "wq_province "   onChange=chsel()>
                    <option   value= "xxx "   selected> 请选择省份…… </option>
                    <%dim   tmpShengid
tmpShengid=0
set   rs_s=server.createobject( "adodb.recordset ")
sql= "select   *   from   qiongfu_province     order   by   shengorder "
rs_s.open   sql,conn,1,1
while   not   rs_s.eof
          if   rs( "szsheng ")=rs_s( "ShengNo ")   then
                    tmpShengid=rs_s( "id ")
%>
                    <option   value= " <%=rs_s( "ShengNo ")%> "   selected   > <%=trim(rs_s( "ShengName "))%> </option>
                    <%
          else
%>
                    <option   value= " <%=rs_s( "ShengNo ")%> "   > <%=trim(rs_s( "ShengName "))%> </option>
                    <%
          end   if
        rs_s.movenext
wend
rs_s.close
set   rs_s=nothing
%>
                </select>
                <select   size= "1 "   class= "wenbenkuang "   name= "wq_city ">
                    <%
set   rs_s=server.createobject( "adodb.recordset ")
sql= "select   *   from   qiongfu_city   where   shengid= "&tmpShengid& "   order   by   shiorder "
rs_s.open   sql,conn,1,1
while   not   rs_s.eof
%>
                    <option   value= " <%=rs_s( "ShiNo ")%> "   > <%=trim(rs_s( "ShiName "))%> </option>
                    <%
        rs_s.movenext
wend
rs_s.close
set   rs_s=nothing
%>
                </select>
<font   color= "#FF0000 "> ** </font> </td>
        </tr>


<script   language=JavaScript>
<%dim   sql,i,j
set   rs_s=server.createobject( "adodb.recordset ")


sql= "select   *   from   qiongfu_province   order   by   shengorder "
rs_s.open   sql,conn,1,1
%>
var   selects=[];
selects[ 'xxx ']=new   Array(new   Option( '请选择城市…… ', 'xxx '));
<%
for   i=1   to   rs_s.recordcount
%>
selects[ ' <%=rs_s( "ShengNo ")%> ']=new   Array(
<%
set   rs_s1=server.createobject( "adodb.recordset ")
sql= "select   shiname,shino   from   qiongfu_city   where   shengid= "&rs_s( "id ")& "     group   by   shiname,shiNO   "
rs_s1.open   sql,conn,1,1
if   rs_s1.recordcount> 0   then  
for   j=1   to   rs_s1.recordcount
if   j=rs_s1.recordcount   then  
%>
new   Option( ' <%=trim(rs_s1( "shiname "))%> ', ' <%=trim(rs_s1( "shiNo "))%> '));
<%else
%>
new   Option( ' <%=trim(rs_s1( "shiname "))%> ', ' <%=trim(rs_s1( "shiNo "))%> '),
<%
end   if
rs_s1.movenext
next
else  
%>
new   Option( ' ', '0 '));
<%
end   if
rs_s1.close
set   rs_s1=nothing
rs_s.movenext
next
rs_s.close
set   rs_s=nothing
%>

function   chsel(){
with   (document.form1){
if(wq_province.value)   {
wq_city.options.length=0;
for(var   i=0;i <selects[wq_province.value].length;i++){
wq_city.add(selects[wq_province.value][i]);
}
}
}
}
</script>

[解决办法]
//+++++++++++++++++++++++++++++++++++++++
//+++++grandpaClassValue 一级类的值+++++
//+++++fatherClass二级类的表单对象++++++
//+++++subClass三级类的表单对象++++++++++
//+++++fatherClassValue二级类的值++++++
//+++++subClassValue三级类的值+++++++++++
//+++++fatherArray_Name二级类的数组名称++
//+++++subArray_Name 三级类的数组名称++++
//+++++++++++++++++++++++++++++++++++++++
function createMenu_Second(fatherClassValue,subClass,subClassValue,subArray_Name)//创建二级联系动菜单
{
var sub_Array;
var sub_Value = subClassValue;
sub_Array = eval(subArray_Name + fatherClassValue);
subClass.length=sub_Array.length;
subClass.options[0] = new Option( "请选择 ", "0 ");
if(sub_Array.length != 0 && sub_Array != null)
{
for(var i = 1; i <= sub_Array.length; i++){
subClass.options[i] = new Option(sub_Array[i - 1].split( ", ")[0],sub_Array[i - 1].split( ", ")[1]);
}
}
var optionsObj = subClass.options;//设定修改记录时小类的值
for(var i = 0; i < optionsObj.length;i++){
if(optionsObj[i].value ==sub_Value){
optionsObj[i].selected = true;
}
}
}
function createMenu_Three(grandpaClassValue,fatherClass,subClass,fatherClassValue,subClassValue,fatherArray_Name,subArray_Name)//创建三级互动菜单
{
var father_Array;
var father_Value;
father_Value = fatherClassValue;
father_Array = eval(fatherArray_Name + grandpaClassValue);
fatherClass.length=father_Array.length;
if(father_Array.length != 0){
fatherClass.options[0] = new Option( '请选择 ',0);
for(var i = 1; i < father_Array.length + 1; i++){
fatherClass.options[i] = new Option(father_Array[i-1].split( ", ")[0],father_Array[i-1].split( ", ")[1]);
}


}
else{fatherClass.options[0] = new Option( "请选择 ", "0 ");}
var optionsObj = fatherClass.options;//设定修改记录时中级的值
for(var i = 0; i < optionsObj.length;i++){
if(optionsObj[i].value ==father_Value){
optionsObj[i].selected = true;
}
}
createMenu_Second(fatherClass.value,subClass,subClassValue,subArray_Name)
}

function set_Select(value,object)//设定下拉表单值
{
if(object.length != null)
{
for(i = 0;i < object.length;i++)
{
if(object[i].value == value){object[i].selected = true;}
}
}
else
{
object.selected = true;
}
}

热点排行