| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1797 人关注过本帖
标题:关于二级联动菜单!
只看楼主 加入收藏
szp2006
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2006-4-22
收藏
得分:0 
我想实现不同的用户登陆后,二级联动菜单中只显示与它相关的内容,无关的不显示!
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn_fj16.asp" -->
<!--#include file="admin_qx.asp" -->
<% issjcz %>

<html>   
  <head>   
  <title>奶牛数量</title>   
   <style>   
  body,select   
  {   
  font-size:9pt;   
  font-family:Verdana;   
  }   
  a   
  {   
  color:red;   
  text-decoration:none;   
  }   
  a:hover{   
  text-decoration:underline;   
  }   
  .style5 {color: #000000}
  .STYLE6 {
    font-size: 12pt;
    font-weight: bold;
}
  body {
    background-color: #d6dff7;
}
</style>
  <body>
 <%xiangzhen=session("xiangzhen") %>
 <form id="form1" name="form1" method="post" action="nainiushuliang_add_save.asp">
  <SCRIPT   LANGUAGE="JavaScript">  
   <!--   
  function   Dsy()   
  {   
  this.Items   =   {};   
  }   
  Dsy.prototype.add   =   function(id,iArray)   
  {   
  this.Items[id]   =   iArray;   
  }   
  Dsy.prototype.Exists   =   function(id)   
  {   
  if(typeof(this.Items[id])   ==   "undefined")   return   false;   
  return   true;   
  }   
   
  function   change(v){   
  var   str="0";   
  for(i=0;i<v;i++){   str+=("_"+(document.getElementById(s[i]).selectedIndex-1));};   
  var   ss=document.getElementById(s[v]);   
  with(ss){   
  length   =   0;   
  options[0]=new   Option(opt0[v],opt0[v]);   
  if(v   &&   document.getElementById(s[v-1]).selectedIndex>0   ||   !v)   
  {   
  if(dsy.Exists(str)){   
  ar   =   dsy.Items[str];   
  for(i=0;i<ar.length;i++)options[length]=new   Option(ar[i],ar[i]);   
  if(v)options[1].selected   =   true;   
  }   
  }   
  if(++v<s.length){change(v);}   
  }   
  }   
   
  var   dsy   =   new   Dsy();

  a="安徽",b="北京",c="福建",d="甘肃";
  a1="安庆",a2="蚌埠"
  b1="北京"
 if (a=xiangzhen)
   {b="";c="";d="";
   }
   
  dsy.add("0",["a","b","c","d"]);   
   
  dsy.add("0_0",["a1","a2",]);   
 
  dsy.add("0_1",["b1"]);   
  
     
   
  //-->   
  </SCRIPT>   
  <SCRIPT   LANGUAGE   =   JavaScript>   
  <!--   
  //**   Power   by   Fason(2004-3-11)   
  //**   Email:fason_pfx@   
   
  var   s=["s1","s2","s3"];   
  var   opt0   =   [" "," "];   
  function   setup()   
  {   
  for(i=0;i<s.length-1;i++)   
  document.getElementById(s[i]).onchange=new   Function("change("+(i+1)+")");   
  change(0);   
  }   
  //-->   
  </SCRIPT>   
  </head>   
  <body   bgcolor="#E0E0E0"   onload="setup()">
  <form   name="frm">   
    <p>&nbsp;</p>
    <table width="884" border="0" cellpadding="2" cellspacing="2" bordercolor="#F3F3F3">
      <!--DWLayoutTable-->
      <tr>
        <td height="44" colspan="2" align="right" valign="bottom" bordercolor="#999999"><div align="center" class="STYLE6">乡镇办场奶牛数量统计表</div></td>
      </tr>
      <tr>
        <td height="45" align="right" valign="bottom" bordercolor="#999999">日期:</td>
        <td width="455" align="left" valign="bottom" bordercolor="#999999"><span class="time style5">
          <select name="byear" size="1" class="put" id="select14">
            <option value=""> </option>
            <%for i=year(date) to 2050 step 1%>
            <option value="<%=i%>"><%=i%></option>
            <%next%>
          </select>
         
          <select name="bmonth" size="1" class="put" id="select15">
            <option value=""> </option>
            <%for i=1 to 12%>
            <option value="<%=i%>"><%=i%></option>
            <%next%>
          </select>
        月</span></td>
      </tr>
      <tr>
        <td width="415" height="45" align="right" valign="bottom" bordercolor="#999999">地点:</td>
        <td align="left" valign="bottom" bordercolor="#999999"><select name="xiangzhen" size="1"   id="s1">
          </select>
          <span class="time style5">
          <select name="cun" size="1"   id="s2">
          </select>
          </span></td>
      </tr>
      <tr>
        <td height="45" align="right" valign="bottom" bordercolor="#999999">奶牛头数:</td>
        <td align="left" valign="bottom" bordercolor="#999999"><input name="shuliang" type="text" id="shuliang" size="15">
          头</td>
      </tr>
    </table>
    <p align="center">&nbsp;</p>
    <p align="center">
      <input type="submit" name="Submit" value="添加记录" style="width:120;background-color: #FFCC66; color: #000000; border: 1 solid #000000" />
    </p>
  </form>   
  </body>   
  </html>

2008-10-16 15:39
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
<%xiangzhen=session("xiangzhen") %>
<form id="form1" name="form1" method="post" action="nainiushuliang_add_save.asp">
<SCRIPT   LANGUAGE="JavaScript">
//这段代码的问题非常严重逻辑很混乱
//首先这个Dsy的定义到是没什么问题
function Dsy()   
{   
  this.Items={};   
}   
Dsy.prototype.add=function(id,iArray)   
{   
  this.Items[id]=iArray;   
}   
Dsy.prototype.Exists=function(id)   
{   
  if(typeof(this.Items[id])=="undefined")   
     return false;   
  return true;   
}
//上面的代码定义了一个Dsy的类
//关键问题在下面的change过程和调用代码   
function change(v)
{   
  var str="0";
  //单看这个循环看不出问题
  //但是setup最后change(0);这里的参数给的能使这段循环出问题
  //i=0;i<v这里的v在调用change时为0,而循环开始i=0,但i并不小于0不符合循环条件   
  for(i=0;i<v;i++)
  {   
      str+=("_"+(document.getElementById(s[i]).selectedIndex-1));
  }   
  var ss=document.getElementById(s[v]);   
  with(ss)
  {   
     length=0;   
     options[0]=new Option(opt0[v],opt0[v]);
     //接下来这两个判断更有问题   
     if(v&&document.getElementById(s[v-1]).selectedIndex>0||!v)   
     {
        //这里用str作参数传递
        //Dsy.prototype.Exists注意上面这个代码函数的定义
        //this.Items[id]这里的Items是数组id应为数字型,而id是Exists函数的参数
        //这里的str被初始化为字符串型 var str="0";并且Exists内对此未做任何处理  
        if(dsy.Exists(str))
        {   
           ar=dsy.Items[str];//上面已经说过了Items是一种动态数组str是字符串
           //这个循环就更有问题了  
           for(i=0;i<ar.length;i++)
               options[length]=new Option(ar[i],ar[i]);
               //length是ss下拉框元素的长度
               //length=0;   
               //options[0]=new Option(opt0[v],opt0[v]);
               //上面这两句对ss的length和首个选项做了初始化
               //问题时这个length++的代码在哪里?
               //循环这么长时间都只给了首个选项   
           if(v)
               options[1].selected=true;   
        }   
     }   
     if(++v<s.length)
     {
        change(v);
     }   
   }   
}   
var dsy=new Dsy();
a="安徽";
b="北京";
c="福建";
d="甘肃";
a1="安庆";
a2="蚌埠";
b1="北京";
//还有这个判断a==xiangzhen
//select name="xiangzhen"这里的xiangzhen是下拉框a是字符串
//这两个永远都不是一个类型的变量或对象如何相等呢?
if(a==xiangzhen)
{
   b="";
   c="";
   d="";
}
dsy.add("0",["a","b","c","d"]);   
dsy.add("0_0",["a1","a2",]);   
dsy.add("0_1",["b1"]);   
  
//剩下的都不想看了,光上面的代码就有不少问题,这的确不可能显示出内容     
   
  //-->   
  </SCRIPT>   
  <SCRIPT   LANGUAGE   =   JavaScript>   
  <!--   
  //**   Power   by   Fason(2004-3-11)   
  //**   Email:fason_pfx@   
   
  var s=["s1","s2","s3"];   
  var opt0   =   [" "," "];   
  function setup()   
  {   
    for(i=0;i<s.length-1;i++)   
        document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");   
    change(0);   
  }
2008-10-16 16:05
szp2006
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2006-4-22
收藏
得分:0 
那我应该怎么办啊,,
中间二级联动的代码是从网上下载的

2008-10-16 17:01
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
<%xiangzhen=session("xiangzhen") %>
<form id="form1" name="form1" method="post" action="nainiushuliang_add_save.asp">
<SCRIPT   LANGUAGE="JavaScript">  
function Dsy()   
{   
  this.Items={};   
}   
Dsy.prototype.add=function(Sel,Txt)   
{   
  Sel.add(new Option(Txt,Txt));   
}
Dsy.prototype.RemoveAll=function(Sel)
{
   for(var i=0;i<Sel.options.length;i++)
       Sel.remove(i);
}   
function change(v)
{
   var ds=new Dsy();
   switch(v)
   {
      case 1:
         var sel=document.getElementById("s1");
         if(sel.options.length<=0)
         {
            for(var i=0;i<Provinces.length;i++)
               ds.add(sel,Provinces[i]);
         }  
      break;
      case 2:
         var sel=document.getElementById("s2");
         var selValue=sel.options[sel.selectedIndex].value;
         ds.RemoveAll(sel);
         for(var r=0;r<City.length;r++)
         {
            if(City[r][0]==selValue)
            {
               for(var c=0;c<City[r].length;c++)
               {
                   if(City[r][c]!=selValue)
                      ds.add(sel,Provinces[i]);
               }
            }
         }  
      break;
   }   
}   
var dsy=new Dsy();
var Provinces=new Array();
Provinces[0]="安徽";
Provinces[1]="北京";
Provinces[2]="福建";
var City=new Array();
City[0]=new Array();
City[0][0]="安徽";
City[0][1]="合肥市";
City[0][2]="芜湖市";
City[1]=new Array();
City[1][0]="北京";
City[1][1]="宣武区";
City[1][2]="海淀区";
City[2]=new Array();
City[2][0]="福建";
City[2][1]="福州市";
City[2][2]="厦门市";
City[2][3]="莆田市";


     
   
  //-->   
  </SCRIPT>   
  <SCRIPT   LANGUAGE   =   JavaScript>   
  <!--   
  //**   Power   by   Fason(2004-3-11)   
  //**   Email:fason_pfx@   
   
  var s=["s1","s2"];   
  function setup()   
  {   
    for(i=0;i<s.length-1;i++)   
        document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
    change(0);   
  }
楼主应该学习一下javascript,平时多多练习写些程序,这回帮你写了,下回自己琢磨。

[[it] 本帖最后由 yms123 于 2008-10-16 21:07 编辑 [/it]]
2008-10-16 21:05
szp2007
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-2-14
收藏
得分:0 
版主,辛苦了,我还以为没人肯帮我了呢,javascript我一点都不会,从来没学过,所以也看不懂,VB什么的还学过一点,被领导逼上梁山,没办法!
还有一个问题:我想用条件来控制二级联动,某个地区的用户只能录入当地的信息,所以,其他地区的名称就不能显示在菜单中,再次请教:这个判断怎么来写??
2008-10-16 21:28
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
14楼把联动菜单代码都给你了,剩下的自己好好研究吧。
这里是学习和讨论某个相关问题,而不是完整的代码咋写呀。

莫以善小而不为,莫以恶小而为之!
2008-10-17 16:07
快速回复:关于二级联动菜单!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042905 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved