脚本复杂又简单--一个菜单模块

这里的脚本仅指jscript

 脚本是复杂又简单的.说简单,是因为它是对象加上层次结构,甚至数组都是对象而不是数据结构,而且是浏览器中已内在声明了的,让你用就是.说复杂,是因为它的简单,让你在一些数据结构与算法的处理上得动一翻脑筋,也得对浏览器有深入的了解.下面是一个菜单模块,没进入文章正文就能正常显示,当进入文章正文阅读后就不能正常运行了.

<script> var h,w,l,t; var TempMenu=0,TempShow=false,b_false,b_true;//临时变量,b_false,b_true为阻赛代号 var stylelist = ' 设置1
设置2
设置3
设置4
设置5
'; function Lzy_Alpha(a,b)//淡入淡出循环,a表对象b来区别是show or hide { if(b) {clearTimeout(b_false);//阻塞 if(TempMenu<81) { TempMenu+=2; a.filters.Alpha.Opacity =TempMenu; b_true=setTimeout("Lzy_Alpha(MenuDiv,1)",1); }} else {clearTimeout(b_true);//阻塞 if(TempMenu>0) { TempMenu-=2; if(TempMenu<=0)MenuDiv.style.visibility = "hidden"; a.filters.Alpha.Opacity =TempMenu; b_false=setTimeout("Lzy_Alpha(MenuDiv,0)",1); }} } function ShowMenu(MenuCode,tWidth)//参数分别表,菜单内容与菜单宽度 { vSrc = window.event.srcElement; h = vSrc.offsetHeight; w = vSrc.offsetWidth; l = vSrc.offsetLeft +2; t = vSrc.offsetTop + h-1;//与上一行一起,设置菜单出现的位置 if(w > tWidth ){tWidth=w;} //确保菜单与事件标签同宽 MenuCode = " "; vParent = vSrc.offsetParent;//如果其父标签使用了相对或绝对位置,进行位移补偿 while (vParent.tagName.toUpperCase() != "BODY") { l += vParent.offsetLeft; t += vParent.offsetTop; vParent = vParent.offsetParent; } MenuDiv.innerHTML = MenuCode;//注入 MenuDiv.style.top = t; MenuDiv.style.left = l; MenuDiv.style.visibility = "visible"; TempShow=true; Lzy_Alpha(MenuDiv,TempShow);//渐深 } function HideMenu() { if(TempShow) { mX = window.event.clientX + document.body.scrollLeft; mY = window.event.clientY + document.body.scrollTop; if ((mX < parseInt(MenuDiv.style.left)) || (mX > parseInt(MenuDiv.style.left)+MenuDiv.offsetWidth) || (mY < parseInt(MenuDiv.style.top)-h) || (mY > parseInt(MenuDiv.style.top)+MenuDiv.offsetHeight))//判断mouse移出菜单外 {TempShow=false; Lzy_Alpha(MenuDiv,TempShow);//渐淡 } } } </script>

淡入淡出菜单

因为弹出菜单里的某些脚本代码与网页的某些语句冲突了,浏览器对象不存在,对象同名了 等等.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值