<div onmouseout='mouseOut()' id="div1">2222<a>111</a></div>function mouseOut(){
document.getElementById("div1").style.display="none";
}我要求鼠标移出div时,才执行mouseOut方法。但我鼠标在div内移动,当移动到<a>里面时,他也执行mouseOut方法。怎么控制,只要鼠标在div内,均不执行mouseOut方法呢????

解决方案 »

  1.   


    //获取指定标签的所有子标签
    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;
    };
    function mouseOut(event){
    var obj=document.getElementById("div1");
    var nodes=getAllChildNodes(obj);
    event=event ? event : (window.event ? window.event : null);
    if(document.all) event.target=event.srcElement;
    for(var i=0;i<nodes.length;i++){
    if(nodes[i]==event.target){
    return false;
    }
    }
    obj.style.display="none";
    }
      

  2.   

    一种解决办法 ,在DIV1内的所有其他元素都把div1显示<div onmouseout='mouseOut()' id="div1">2222<a>111</a></div>function mouseOut(){
    document.getElementById("div1").style.display="none";
    }function showDiv(){
    document.getElementById("div1").style.display="block";
    }window.onload=function(){
    var oList=document.getElementById("div1").getElementsByTagName('*');
    for(var i=0;i<oList.length;i++){
       oList[i].onmouseover=showDiv;
      }
    }
      

  3.   


    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;
        };
    function mouseOut(event){
    var obj=document.getElementById("div1");
    var nodes=getAllChildNodes(obj);
    event=event ? event : (window.event ? window.event : null);
    if(document.all) event.relatedTarget=event.toElement;
    //刚才弄成判断触发事件的标签了,应该是判断鼠标移向哪个标签才对
    for(var i=0;i<nodes.length;i++){
    if(nodes[i]==event.relatedTarget) return false;//如果鼠标移向子标签则直接终止
    }
    if(obj==event.relatedTarget) return false;//鼠标由子标签移向div1也直接终止
    obj.style.display="none";
    }
      

  4.   

    楼上的说法我试了下,不行的。event.relatedTarget获得不到某个对象的