navbar.js
上传用户:wenllgg125
上传日期:2020-04-09
资源大小:7277k
文件大小:8k
源码类别:

SCSI/ASPI

开发平台:

Others

  1. 
  2. var menu, titles, submenus, arrows, bypixels; //定义指定的菜单数组变量
  3. var heights = new Array();
  4. var speed=25;  //加载菜单项的速度  
  5. var n = navigator.userAgent;
  6. if(/Opera/.test(n)) 
  7. {
  8.     bypixels = 2;
  9. }
  10. else if(/Firefox/.test(n)) 
  11. {
  12.     bypixels = 3;
  13. }
  14. else if(/MSIE/.test(n)) 
  15. {
  16.    bypixels = 2;
  17. }
  18. //展开所有的菜单项
  19. function slash_expandall()
  20. {
  21.     if (typeof menu!="undefined")
  22.     {
  23.     for(i=0; i<Math.max(titles.length, submenus.length); i++)
  24.     {
  25.      titles[i].className="CurrentItem";
  26.     arrows[i].src = imgpath+"dropdown.gif";
  27.     submenus[i].style.display="";
  28.     submenus[i].style.height = heights[i]+"px";
  29.     }
  30.     }
  31. }
  32. //收缩所有菜单项
  33. function slash_contractall()
  34. {
  35. if (typeof menu!="undefined")
  36. {
  37. if(expandall == false)
  38. {
  39. for(i=0; i<Math.max(titles.length, submenus.length); i++)
  40. {
  41. currents[i].className="NoSelect";
  42. arrows[i].src = imgpath+"dropdown.gif";
  43. submenus[i].style.display="none";
  44. submenus[i].style.height = 0+"px";
  45. submenusli[i].style.display = "none";
  46. }
  47. }
  48. }
  49. }
  50. //初始化函数
  51. function init(showmenuid,showmenuidlist){
  52.     menu = getElementsByClassName("NavManagerMenu", "div", document)[0];
  53.     titles = getElementsByClassName("CurrentItem", "li", menu);
  54.     arrows = getElementsByClassName("arrow", "img", menu);
  55.     submenus = getElementsByClassName("Submenu1", "div", menu);
  56.     submenusli = getElementsByClassName("Submenu", "li", menu);
  57.     currents = getElementsByClassName("current", "div", menu);
  58.    
  59.     
  60.    for(i=0; i<Math.max(titles.length, submenus.length); i++) 
  61.    {
  62.         heights[i] = submenus[i].offsetHeight;
  63.         submenus[i].style.height = submenus[i].offsetHeight+"px";
  64.         
  65.         submenus[i].style.display = "none";
  66.         currents[i].style.display = "none";
  67.         titles[i].style.display = "none";
  68.         currents[i].className="NoSelect";
  69.         submenusli[i].style.display = "none";
  70.         /*alert(i); */
  71. }
  72. //当存在初始菜单项id串参数时
  73. if((showmenuid!=null)&&(showmenuid!=""))
  74. {
  75.     i = 0;
  76.     var menuidarray = showmenuidlist.split(',')
  77.     for(i = 0; i< menuidarray.length ;i++)
  78.     {
  79.             for(j = 0 ; j < titles.length ; j++)
  80.             {
  81.                 if(titles[j].getAttribute("forid") == menuidarray[i])
  82.                 {
  83.                     titles[j].style.display = "block";
  84.                     if(menuidarray[i]!=showmenuid)
  85.                 {
  86.                    submenus[j].style.display = "none";
  87.                        currents[j].style.display = "block";
  88.                        arrows[j].src = imgpath+"dropdown.gif";
  89.                        submenusli[j].style.display = "none";
  90.                     }
  91.                     else
  92.                     {
  93.                        submenus[j].style.display = "block";
  94.                        currents[j].style.display = "block";
  95.                        arrows[j].src = imgpath+"dropup.gif";
  96.                        currents[j].className = "current";
  97.                        submenusli[j].style.display = "block";
  98.                     }
  99.                     break;
  100.                 }
  101.             }
  102.         }
  103. }
  104.     window_load();
  105. }
  106. //存储菜单项状态
  107. function restore() 
  108. {
  109.     if(getcookie("menu") != null) 
  110.     {
  111.         var hidden = getcookie("menu").split(",");
  112.         for(var i in hidden) 
  113.         {
  114.             titles[hidden[i]].className = "CurrentItem";
  115.             submenus[hidden[i]].style.height = "0px";
  116.             submenus[hidden[i]].style.display = "none";
  117.             arrows[hidden[i]].src =imgpath+"dropup.gif";
  118.         }
  119.     }
  120. }
  121. //定向到指定的菜单项进行相应操作
  122. function gomenu(e) 
  123. {
  124.     if (!e)
  125.     {
  126.        e = window.event;
  127.     }   
  128.       
  129.     var ce = (e.target) ? e.target : e.srcElement;
  130.  
  131.     var sm ;
  132.   
  133.     //找到当前菜单项在数组中的位置,用于下面显示或隐藏判断
  134.     for(var i in currents) 
  135.     {
  136.         if((arrows[i] == ce)||(currents[i] == ce.parentNode)||(currents[i] == ce.parentNode.parentNode)) 
  137.         {
  138.             sm = i;
  139.         }
  140.     }
  141.    
  142.     if(sm >=0)
  143.     {
  144.        //当前菜单项是展示状态时 
  145.        if(parseInt(submenus[sm].style.height) > parseInt(heights[sm])) 
  146.        {
  147.           hidemenu(sm);
  148.        }
  149.        else
  150.        {
  151.             //当前菜单项是展示状态时
  152.             if(submenus[sm].style.display=="block")
  153.             {
  154.                  hidemenu(sm);
  155.             }
  156.             else
  157.             {
  158.                  //显示指定的菜单项
  159.                  slash_contractall();
  160.                  currents[sm].className = "current";
  161.                  showmenu(sm);
  162.             }
  163.        }
  164.    }
  165. }
  166. //隐藏指定的菜单元素
  167. function hidemenu(sm) 
  168. {
  169.     var nr = submenus[sm].getElementsByTagName("a").length*bypixels+speed;
  170.     submenus[sm].style.height = (parseInt(submenus[sm].style.height)-nr)+"px";
  171.     
  172.     var to = setTimeout("hidemenu("+sm+")", 5);
  173.     if(parseInt(submenus[sm].style.height) <= nr)
  174.     {
  175.         clearTimeout(to);
  176.         submenus[sm].style.display = "none";
  177.         submenus[sm].style.height = 0+"px";
  178.         arrows[sm].src = imgpath+"dropdown.gif";
  179.         submenusli[sm].style.display = "none";
  180.         currents[sm].className = "NoSelect";
  181.     }
  182. }
  183. //显示指定的菜单元素
  184. function showmenu(sm) 
  185. {
  186.     var nr = submenus[sm].getElementsByTagName("a").length*bypixels+speed;
  187.     submenus[sm].style.display = "block";
  188.     submenus[sm].style.height = (parseInt(submenus[sm].style.height)+nr)+"px";
  189.     var to = setTimeout("showmenu("+sm+")", 5);
  190.     if(parseInt(submenus[sm].style.height) > (parseInt(heights[sm])-nr)) 
  191.     {
  192.         clearTimeout(to);
  193.         submenus[sm].style.height = heights[sm]+"px";
  194.         arrows[sm].src = imgpath+"dropup.gif";
  195.         submenusli[sm].style.display = "block";
  196.     }
  197. }
  198. //保存菜单元素
  199. function store()
  200. {
  201.     var hidden = new Array();
  202.     for(var i in titles) 
  203.     {
  204.         if(titles[i].className == "CurrentItem")
  205.         {
  206.             hidden.push(i);
  207.         }
  208.     }
  209.     putcookie("menu", hidden.join(","), 5);
  210. }
  211. //获取指定样式的元素
  212. function getElementsByClassName(strClassName, strTagName, oElm)
  213. {
  214.     var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
  215.     var arrReturnElements = new Array();
  216.     strClassName = strClassName.replace(/-/g, "\-");
  217.     var oRegExp = new RegExp("(^|\s)" + strClassName + "(\s|$)");
  218.     var oElement;
  219.     for(var i=0; i<arrElements.length; i++)
  220.     {
  221.         oElement = arrElements[i];      
  222.         if(oRegExp.test(oElement.className))
  223.         {
  224.             arrReturnElements.push(oElement);
  225.         }   
  226.     }
  227.     return (arrReturnElements)
  228. }
  229. function getElements(strTagName, oElm)
  230. {
  231.     var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
  232.     return arrElements;
  233. }
  234. function putcookie(c_name,value,expiredays) 
  235. {
  236.     var exdate=new Date();
  237.     exdate.setDate(exdate.getDate()+expiredays);
  238.     document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate);
  239. }
  240. function getcookie(c_name)
  241. {
  242.     if(document.cookie.length > 0) 
  243.     {
  244.         var c_start = document.cookie.indexOf(c_name + "=");
  245.         if(c_start != -1) 
  246.         {
  247.             c_start = c_start + c_name.length + 1;
  248.             var c_end = document.cookie.indexOf(";",c_start);
  249.             if(c_end == -1)
  250.                 c_end = document.cookie.length;
  251.             return unescape(document.cookie.substring(c_start, c_end));
  252.         }
  253.     }
  254.     return null;
  255. }