像当当网的菜单栏。鼠标放上去,会弹出相关菜单。做这种菜单栏,我有一个地方搞不明白。鼠标移到那个菜单上,会弹出一个相关菜单框。鼠标移出时,菜单框消失。但鼠标移出菜单,如果是移出到弹出的菜单框里面去,弹出菜单不消失。怎么能让他移出时,弹出框不消失呢???

解决方案 »

  1.   

    function baimouseOut() {
       sug_gid('a_baihchannel').className = "goods";
       sug_gid('__ddnav_guan').style.display = "none";
    }
    function baimouseOver() {
        sug_gid('a_baihchannel').className = "goods hover";
        sug_gid('__ddnav_guan').style.display = "block";
    }
      

  2.   

    弹出的菜单框,加上onmouseover=xxx()xxx()和菜单栏上的onmouseover一样
      

  3.   

    当当那个菜单的处理方法是在菜单和弹出/隐藏层同时绑定了onmouseover和onmouseout事件,onmouseover触发时显示二级菜单div(style.display="block"),离开时隐藏二级菜单div(style.display="none")。不太理解你的问题,是不是想要鼠标移出二级菜单div时不隐藏这个二级菜单,这样的话就只给这个div绑定onmouseover事件,不绑定onmouseout事件。。我说得比较乱,希望你能明白我的意思
      

  4.   

    是楼上说的那个意思,但如果不绑定onmouseout事件,鼠标直接从下面移出时,是要求要隐藏二级菜单的。我现在找到了一个比较好的方式了。鼠标移出时使用时间延时
    <span id="b" onmouseout="var iTO = setTimeOut(remove('b'),500);"><select/>要添加mouseover 和 mouseout处理:
    <select onmouseover="clearTimeOut(iTO);" onmouseout="remove('b')" ></select>该方法,<select/>可随便放, 只要鼠标离开<span/> 0.5秒内(500ms) 移到<select/>, 就不会触发 remove('b') 
      

  5.   


    var getAllChildNodes=function(obj){
            var nodes = obj.childNodes;
            var arr = new Array();
            var len = nodes.length;
            for(var i=0;i<len;i++){
                if(nodes[i].tagName!=undefined){
                    arr.push(nodes[i]);
                    arr = arr.concat(getAllChildNodes(nodes[i]));
                }
            }
            return arr;
    };
    //在你另一个帖子里回你了
    //用这个方法得到指定标签下的所有子标签,然后判断下鼠标是往哪里移动的
    //如果是由div1移向div1的子标签的话则不执行obj.style.display="none";
    //同样,如果是由div1的子标签移向div1本身,也不执行obj.style.display="none";