用JS写了一个菜单

  1 None.gif
  2 None.gif // 定义所有元素
  3 None.gif var  menuObject = new  Array();
  4 None.gif var  menuWidth = 60 ;
  5 None.gif
  6 None.gif function  Menu(name,icon,url,isSubItem)
  7 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
  8InBlock.gif    this.Items=new Array();
  9InBlock.gif    this.Name=name;
 10InBlock.gif    this.Icon=icon;
 11InBlock.gif    this.Url=url;
 12InBlock.gif    this.id=RegisterMenu(this);
 13InBlock.gif
 14ExpandedBlockEnd.gif}

 15 None.gif
 16 None.gif
 17 None.gif function  MenuItem(menu,name,icon,url,isSubItem)
 18 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 19InBlock.gif
 20InBlock.gif    this.Name=name;
 21InBlock.gif    this.Icon=icon;
 22InBlock.gif    this.Url=url;
 23InBlock.gif    this.IsSubItem=isSubItem;
 24InBlock.gif    this.id=menu.id+""+menu.Items.length; //用于变为字符串类型相加
 25InBlock.gif
 26InBlock.gif    this.parentId=menu.id;
 27InBlock.gif    menu.Items[menu.Items.length]=this;
 28InBlock.gif
 29ExpandedBlockEnd.gif}

 30 None.gif
 31 None.gif
 32 None.gif function  AddMenuItem(item)
 33 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 34InBlock.gif    this.Items[this.Items.length]=item;
 35InBlock.gif    item.parentId=this.id;
 36InBlock.gif    
 37ExpandedBlockEnd.gif}

 38 None.gif
 39 None.gif function  RegisterMenu(m)
 40 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 41InBlock.gif    menuObject[menuObject.length]=m;
 42InBlock.gif    return menuObject.length;
 43ExpandedBlockEnd.gif}

 44 None.gif
 45 None.gif
 46 None.gifMenu.prototype.AddItem = AddMenuItem;
 47 None.gifMenuItem.prototype.AddItem = AddMenuItem;
 48 None.gif
 49 None.gif
 50 None.gif function  GenMenu()
 51 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 52InBlock.gif    //document.write("<div id=MenuContainer style='border:solid 1px red;position:relative;top:1px;left:1px;heigth:30px;'>11<div>");
 53InBlock.gif    var menuContainer=document.getElementById("MenuContainer");
 54InBlock.gif    //alert(menuObject.length);
 55InBlock.gif    for(var i=0;i<menuObject.length;i++)
 56ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 57InBlock.gif        var m=menuObject[i];
 58InBlock.gif        var leftPos=2+i*menuWidth;
 59InBlock.gif        var obj=document.createElement("<span class='Menu'></span>");
 60InBlock.gif        obj.innerText=m.Name;
 61InBlock.gif        obj.id=m.id;
 62InBlock.gif        obj.attachEvent('onclick',GenMenuItem);
 63InBlock.gif        obj.attachEvent('onmouseover',GenMenuItem);
 64InBlock.gif        obj.attachEvent('onmouseout',OutMenu);
 65InBlock.gif        //obj.οnclick=GenMenuItem;
 66InBlock.gif        menuContainer.insertAdjacentElement('beforeEnd',obj);
 67InBlock.gif
 68ExpandedSubBlockEnd.gif    }

 69InBlock.gif
 70ExpandedBlockEnd.gif}

 71 None.gif
 72 None.gif function  GenMenuItem()
 73 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 74InBlock.gif    var menuItemContainer=document.getElementById("MenuItemContainer");
 75InBlock.gif    menuItemContainer.innerHTML="";
 76InBlock.gif    
 77InBlock.gif    window.setTimeout(disMenuItem,10);
 78InBlock.gif    
 79InBlock.gif    var m=menuObject[event.srcElement.id-1];
 80InBlock.gif    document.getElementById(event.srcElement.id).className='MenuOver';
 81InBlock.gif//    alert(document.getElementById(event.srcElement.id).offsetLeft);
 82InBlock.gif    var miLeft=document.getElementById(event.srcElement.id).offsetLeft-10;
 83InBlock.gif    for (var i=0;i<m.Items.length ;i++ )
 84ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 85InBlock.gif        var mi=m.Items[i];
 86InBlock.gif        var obj=document.createElement("<div class='MenuItem' style='left:"+miLeft+";'></div>");
 87InBlock.gif        obj.innerText=mi.Name;
 88InBlock.gif        obj.id=mi.id;
 89InBlock.gif        obj.attachEvent('onclick',OverMenuItem);
 90InBlock.gif        obj.attachEvent('onmouseover',OverMenuItem);
 91InBlock.gif        obj.attachEvent('onmouseout',OutMenuItem);
 92InBlock.gif        menuItemContainer.insertBefore(obj);
 93ExpandedSubBlockEnd.gif    }

 94InBlock.gif    
 95ExpandedBlockEnd.gif}

 96 None.gif
 97 None.gif function  disMenuItem()
 98 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 99InBlock.gif    var menuItemContainer=document.getElementById("MenuItemContainer");
100InBlock.gif    menuItemContainer.style.display='';
101ExpandedBlockEnd.gif}

102 None.gif function  OutMenu()
103 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
104InBlock.gif    document.getElementById(event.srcElement.id).className='Menu';
105InBlock.gif    
106ExpandedBlockEnd.gif}

107 None.gif
108 None.gif function  OverMenuItem()
109 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
110InBlock.gif    //alert(event.srcElement.id);
111InBlock.gif    document.getElementById(event.srcElement.id).className='MenuItemOver';
112InBlock.gif    document.getElementById(event.srcElement.id).parentNode.style.display='';
113ExpandedBlockEnd.gif}

114 None.gif
115 None.gif function  OutMenuItem()
116 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
117InBlock.gif    document.getElementById(event.srcElement.id).className='MenuItem';
118InBlock.gif    document.getElementById(event.srcElement.id).parentNode.style.display='none';
119ExpandedBlockEnd.gif}

120 None.gif
121 None.gif var  m1 = new  Menu( " 个人首页 " , "" , "" , false );
122 None.gif var  sm1 = new  MenuItem(m1, " 测试1 " , "" , "" , true );
123 None.gif var  sm2 = new  MenuItem(m1, " 测试2 " , "" , "" , true );
124 None.gif var  sm3 = new  MenuItem(m1, " 测试3 " , "" , "" , true );
125 None.gif
126 None.gif
127 None.gif var  m2 = new  Menu( " 金百合 " , "" , "" , false );
128 None.gif var  sm21 = new  MenuItem(m2, " 帮助1 " , "" , "" , true );
129 None.gif var  sm22 = new  MenuItem(m2, " 帮助2 " , "" , "" , true );
130 None.gif var  sm23 = new  MenuItem(m2, " 帮助3 " , "" , "" , true );
131 None.gif
132 None.gif var  m3 = new  Menu( " 同楼约会 " , "" , "" , false );
133 None.gif var  sm31 = new  MenuItem(m3, " 心理咨询1 " , "" , "" , false );
134 None.gif var  sm32 = new  MenuItem(m3, " 心理咨询2 " , "" , "" , false );
135 None.gif var  sm33 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
136 None.gif var  sm34 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
137 None.gif var  sm35 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
138 None.gif var  sm36 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
139 None.gif var  sm37 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
140 None.gif var  sm38 = new  MenuItem(m3, " 心理咨询3 " , "" , "" , false );
141 None.gif
142 None.gif var  m4 = new  Menu( " 心理测试 " , "" , "" , false );
143 None.gif var  m5 = new  Menu( " 我的匹配 " , "" , "" , false );
144 None.gif var  sm51 = new  MenuItem(m5, " 心理咨询1 " , "" , "" , false );
145 None.gif var  sm52 = new  MenuItem(m5, " 心理咨询2 " , "" , "" , false );
146 None.gif var  sm53 = new  MenuItem(m5, " 心理咨询3 " , "" , "" , false );
147 None.gif var  sm54 = new  MenuItem(m5, " 心理咨询3 " , "" , "" , false );
148 None.gif var  sm55 = new  MenuItem(m5, " 心理咨询3 " , "" , "" , false );
149 None.gif var  sm56 = new  MenuItem(m5, " 心理咨询3 " , "" , "" , false );
150 None.gif var  sm57 = new  MenuItem(m5, " 心理咨询3 " , "" , "" , false );
151 None.gif
152 None.gif
153 None.gif
154 None.gif var  m6 = new  Menu( " 收发消息 " , "" , "" , false );
155 None.gif var  m7 = new  Menu( " 帐户管理 " , "" , "" , false );
156 None.gif var  m8 = new  Menu( " 爱情搜索 " , "" , "" , false );


ContractedBlock.gif ExpandedBlockStart.gif
 1None.gif<script src='Goody_Menu.js' type='text/javascript'></script>
 2None.gif<link href="Goody_Menu.css" rel="stylesheet" type="text/css">
 3None.gif
 4None.gif<body onload="GenMenu()">
 5None.gif测试菜单
 6None.gif<div id=MenuContainer style='position:relative;top:1px;left:1px;heigth:31px;'></div>
 7None.gif<div id=MenuItemContainer style='border:solid 0px #dedede;position:relative;top:1px;left:1px;heigth:31px;'></div>
 8None.gif
 9None.gif
10None.gif
11None.gif
12None.gif
13None.gif
14None.gif
15None.gif<div style='float:left;border:solid 1px green;position:relative;top:200px;left:1px;heigth:30px;'><div style="float:right;width:100px;border :solid 1px blue">111</div><div style="position:relative;left:102px;width:100px;border :solid 1px blue">222</div></div>
16None.gif
17None.gif<table border =1px width=100%><Tr><td>
18None.gif
19None.gif<span style="width:100px;border :solid 1px blue">111</span><span style="position:relative;left:102px;width:100px;border :solid 1px blue">222</span>
20None.gif
21None.gif</td></tr></table>
22None.gif</body>

这个菜单只支持2级!
效果有些抖动,不知道大家有没有更好的方法来控制子菜单显示的位置!


源码下载: 点击下载源码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值