一个利用客户端空间存储树形导航栏信息,从而实现ajax技术动态导航的雏形


<script language=javascript>//本程序支持n行n级菜单展开,n级取决函数中父索引的个数Findex n.
//Picid,Trid,Tdid分别固定为图标id,显示表格id,显示表格id;
//0级菜单为一行,下级的菜单行列皆从1开始记数
//性能在显示20条一级时4级菜单时比较佳,在16一级时5级菜单可行,在10一级时能放6级菜单.关键看一级放多少条,其关系为每级相乘,小于100000则行得通
var a=["a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a"];//服务器传入数组
var b=["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"];
var c=["c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c"];
var d=["d","d","d","d","d","d","d","d","d","d","d","d","d","d","d","d","d"];
var temp1=0;//区别第0级菜单
var temp2=true;//Icorrect区别修不修正值
var Iarray=new Array();//存储1级菜单的修正值
for(var i=0;i<=100;i++){Iarray[i]=0;}//初始化,i的个数表第一级菜单的行数
 function Icorrect(Index,Menugrade,arraylength,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9)//比较后修正菜单展开后层的真正位置//参数分别表本索引号,菜单等级,数组长度,爹索引号
 {
  switch(Menugrade)//原理为1级菜单修正值+他全部上级菜单的索引号+他自己的索引号就为当前的实际值.
  {
  case 1:{Index=Index+Iarray[Index];
    break;} 
  case 2:{Index=Index+Iarray[Findex1]+Findex1;
    break;} 
  case 3:{Index=Index+Iarray[Findex1]+Findex1+Findex2;
    break;}
  case 4:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3;
    break;}
  case 5:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4;
    break;}
  case 6:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4+Findex5;
    break;}
  case 7:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4+Findex5+Findex6;
    break;}
  case 8:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4+Findex5+Findex6+Findex7;
    break;}
  case 9:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4+Findex5+Findex6+Findex7+Findex8;
    break;}
  case 10:{Index=Index+Iarray[Findex1]+Findex1+Findex2+Findex3+Findex4+Findex5+Findex6+Findex7+Findex8+Findex9;
    break;}
  }
  if(Menugrade==1&&temp2){var ii=Index;while(Iarray[++ii]!=null){Iarray[ii]+=arraylength;}}
  if(Menugrade>1&&temp2)
  {while(Iarray[++Findex1]!=null){Iarray[Findex1]+=arraylength;}}//区别第0级菜单
 
 return Index;
 }
 
/*Irequest(0,0,0)第一次使用//参数分别表本索引号,菜单等级,爹索引号
Irequest(1,1,0)Irequest(2,1,0)Irequest(3,1,0)2次使用
Irequest(1,2,2)Irequest(2,2,2)Irequest(3,2,2)3次使用(点的父级是第2项,故中间为2)
Irequest(1,3,2,1)Irequest(1,3,2,1)Irequest(1,3,2,1)4次使用(点的父级是第1项,故为1)

p0=Icorrect(0,0,arraylength,0);//0级,前4个参必有,否则错
var p1=Icorrect(10,1,arraylength,0);//1级使用方法,其它以此推
var p2=Icorrect(11,2,arraylength,9);
var p3=Icorrect(11,3,arraylength,9,8);
var p4=Icorrect(10,4,arraylength,5,9,6);
Iresponse()使用方法同上*/

 function Iresponse(Index,Menugrade,arraylength,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9,a,b,c,d)//改写元素内容.分别表本索引号,菜单等级,a数组长度,爹索引号;abck代传入的数组参数
 {
 arraylength=a.length;
 
 temp2=true;
 var factualindex=Icorrect(Index,Menugrade,arraylength,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9);
 ++Menugrade;
 var temp=0;
 var con=Menugrade+"+";//定义string变量
  while(a[temp++])
  {
  con+=Menugrade+'<img id="Picid" οnclick="Irequest(';//造string
  con=con+temp+','+Menugrade+',';
   if(Findex1)
   {con=con+Findex1+',';
    if(Findex2)
    {con=con+Findex2+',';
     if(Findex3)
     {con=con+Findex3+',';
      if(Findex4)
      {con=con+Findex4+',';
       if(Findex5)
       {con=con+Findex5+',';
        if(Findex6)
        {con=con+Findex6+',';
         if(Findex7)
         {con=con+Findex7+',';
          if(Findex8)
          {con=con+Findex8+',';
          if(Findex9)con=con+Findex9+',';
          }
         }
        }
       }
      }
     }
    }
   }
   if(temp1<1){con=con+'0';}//区别第0级菜单
   else con+=Index;
  con+=' )"></img><table ID="Table1"><tr style="display:none" id="Trid"><td colspan="5" id="Tdid" style="padding:0px"><div style="width:240px;margin-left:18px;border:1px solid black;background-color:lightyellow;color:black;padding:2px">正在读取关于本主题的跟贴,请稍侯……</div></td></tr></table>';
  }//alert(con);
 temp1++;//区别第0级菜单
 document.all.Tdid[factualindex].innerHTML=con;//写内容
 }

 function Irequest(Index,Menugrade,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9,Findex10)//放入页面中的请求函数.分别表本索引号,菜单等级,爹索引号有几级入几个参
 {//初始请求为Irequest(0,0,0)
 
 temp2=false;//判断是不写入修正值
 var tempindex=Icorrect(Index,Menugrade,0,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9,Findex10);
  if (1)
  {
   if (document.all.Trid[tempindex].style.display!="block")
   {document.all.Trid[tempindex].style.display="block";   
   Iresponse(Index,Menugrade,0,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9,a,b,c,d);}
   else
   {
   document.all.Trid[tempindex].style.display="none";
   /*temp2=false;
   tempindex=Icorrect(Index,Menugrade,0,Findex1,Findex2,Findex3,Findex4,Findex5,Findex6,Findex7,Findex8,Findex9,Findex10); 
   
   
   
   while(Iarray[++Findex1]!=null){Iarray[Findex1]+=arraylength;} */
    
    
    
   }
  }
 }

</script>

<img id="Picid" οnclick="Irequest(0,0,0)"></img>
<table ID="Table1">
 <tr style="display:none" id="Trid">
  <td colspan="5" id="Tdid" style="padding:0px">
   <div style="width:240px;margin-left:18px;border:1px solid black;background-color:lightyellow;color:black;padding:2px">正在读取关于本主题的跟贴,请稍侯……
   </div>
  </td>
 </tr>
</table>

<img id="Img1" οnclick="Irequest(0,1,0)"></img>
<table ID="Table2">
 <tr style="display:block" id="Trid">
  <td colspan="5" id="Tdid" style="padding:0px">
   <div style="width:240px;margin-left:18px;border:1px solid black;background-color:lightyellow;color:black;padding:2px">正在读取关于本主题的跟贴,请稍侯……
   </div>
  </td>
 </tr>
</table>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值