你的意思是如果用arrLayer[2,5]初始化,那么显示的结果是只alert 6和2,还是从6一直alert到2?

解决方案 »

  1.   

    最里面的一层是第0层  往上一层是+1 那就是第1层   那第2层应该是alert(4).
    arrLayer[2,5]应该是说先alert第2层,在alert 第5层吧   没能理解.....
      

  2.   

    不好意思,结果应该是alert(4),再alert(1),3楼理解的没错
      

  3.   

    如果layer=[1,3,4],就先后alert(5),alert(3),alert(2)
      

  4.   

    我指的层不一定是div,也可能是fildset,table等元素。
      

  5.   

    什么时候触发事件啊?点击按钮?还是在任意div上点击一下?
      

  6.   

    楼主对冒泡怎么理解的啊?
    按楼主的代码
    如果 onclick="alert(6)" 这个事件停止冒泡的话, 那么他所有父级元素的onclick事件就不会触发, 所以无法这样控制的...
      

  7.   

    这个不知道是不是你要的效果,如果是,也不是用冒泡来解决的.(貌似冒泡也解决不了...,个人见解)
    e.returnValue =false  阻止默认事件行为.....
    <body>
    <div onclick="alert(1)"> 
      <div onclick="alert(2)"> 
        <div onclick="alert(3)"> 
          <div onclick="alert(4)"> 
            <div onclick="alert(5)"> 
              <input id="oo" value="button" type="button" onclick="alert(6)"> 
            </div> 
          </div> 
        </div> 
      </div> 
    </div> 
    </body>
    <script> 
      var arrLayer = [2,5] 
       var ok =0
       var pan =false
      var obj=document.getElementById("oo")
      function init(layer){ 
       while (obj!=document.body){ 
      obj=obj.parentNode
      ok++
        
          for(var i=0;i<layer.length;i++)
         {
       if(ok==layer[i])
                {pan=true}
         }
     
          if(pan)
      {pan=false
      continue;}
      else
      {obj.onclick=function(e){
       e=e||event
       e.returnValue =false}}
    }
              
      } 
      init(arrLayer)
    </script> 
      

  8.   

    <html>
    <body>
    <div id="l1" onclick="alert(1)">
      <div id="l2" onclick="alert(2)">
        <div id="l3" onclick="alert(3)">
          <div id="l4" onclick="alert(4)">
            <div id="l5" onclick="alert(5)">
              <input id="l6" type="button" onclick="alert(6)">
            </div>
          </div>
        </div>
      </div>
    </div>
    <script>
      var arrLayer = [3,2,5] //当前响应事件的层数
      function init(layer){
        //需要实现的代码 for (i=1;i<=6;i++){
    var f = false;
    for(j=0;j<layer.length;j++){
    if( layer[j]==i ){
    f = true;
    break;
    }
    }
    if( f==false ){
    document.getElementById("l"+i).onclick = null;
    }
    }    
      }
      init(arrLayer)
    </script> 
    </body>
    </html>
      

  9.   


    没有办法一次性把所有事件的句柄都取到。
    只有像12楼那样一个一个的设定了。
    好在事件的个数并不是特别多。 if( f==false ){
         with (document.getElementById("l"+i)){
            onclick = null;
            onmousedown = null;
            onmousemove = null;
            ......
         }
     }