雪黛缘
-失业中...QQ:941187431

    前段时间写的,主要是因为页面太小了,隐藏一部分会看起来更好一些...大概嘛,就是这个样子的

本来是想把所有事件都集中到外层的div上处理的,就是注册mouseover和mouseout的事件就完成了,不过发现效果并不好,有两问题,
1:文本输入框的时候,text的得到焦点的时候也应该是触发了mouseover的事件的了,而且ie下的事件机制是冒泡的,所以层并不会隐藏起来,还是可见的,不过当输入过程中鼠标移动出输入框焦点就会失去了.
2:选择下拉列表的时候层就直接隐藏掉了..所以是肯定不行的了...
后来想了一下,其实我们是可以把事件分开的...
1:那个小图片负责将层显示出来.
2.用body的事件将层隐藏掉,也就是body触发onmouseover的时候隐藏掉层的,不过前边说过事件的机制是冒泡的把,那如果一开始小图标的onmouseover事件然后接着冒泡的body的onmouseover事件,那我们做的不就白费了.所以我们要在小图标上阻止事件的冒泡才行window.event.cancelBubble = true;
3:既然隐藏的事件交给了body了,那小图钉的点击动作需要做的事件就是,钉住的时候就把body的mouseover的事件去掉.
非钉住状态的时候把body的mouseover的事件注册上就ok了..
4:为了pageLoag完我们还可以读取小图钉的前一个状态,就是显示与否,pageload完的时候客户端的保存状态应该都是被取消掉的了.所以加了一个<input type="hidden" value="" id="HidLockType" runat="server" />来让服务端可以读取
function ShowSearchDiv()//显示层
        {
            var DivSearch=document.getElementById("DivSearch");
            DivSearch.style.display="";
            window.event.cancelBubble = true;//阻止事件冒泡
        }
        function HidSearchDiv()//隐藏层
        {
            var DivSearch=document.getElementById("DivSearch");
            DivSearch.style.display="none";
        }
        function SetClassName(sender,setclass)
        {
            sender.className=setclass;
        }
        function SetOnLock()//设置钉住状态
        {
            var HidLockType=document.getElementById("HidLockType");
            var sender=document.getElementById("ImgLock");
            if(HidLockType.value=="UnLock")
            {
                HidLockType.value="IsLock";
                sender.src="Lock.jpg";
                document.body.onmouseover=null;
                var DivSearch=document.getElementById("DivSearch");
                DivSearch.style.display="";
            }
            else
            {
                HidLockType.value="UnLock";
                sender.src="UnLock.jpg";
                document.body.onmouseover=HidSearchDiv;
            }
        }
呵呵
照常的例子
最近也开始看ext了,以后也帖点例子上来~^_^

posted on 2008-01-08 14:20  zhuibobo  阅读(570)  评论(0编辑  收藏  举报