zoukankan      html  css  js  c++  java
  • day51—JavaScript绑定事件

    转换学开发,代码100天——2018-05-06

    今天学习JavaScript的绑定事件。因为浏览器的原因绑定事件需要考虑兼容性问题。

    attachEvent     IE浏览器 ,ie9以上事件执行顺序与绑定顺序相同;ie9以下事件执行顺序与绑定顺序相反          

    btn.attachEvent("onclick",function(){
       alert("a");
    });

         
    detachEvent

    btn.detachEvernt("onclick",function(){
       alert("a");
    });

    addEventListener FF及chrome浏览器

    btn.addEventListener("click",function(){
         alert("a");
    });

    removeEventListener

    btn.renoveEventListener("onclick",function(){
       alert("a");
    });

    如对一个按钮添加多个事件:

    <script type="text/javascript">
            window.onload = function(){
                var btn = document.getElementById("btn");
                addMyEvent(btn,"click",function()
                {
                    alert("a");
                });
                addMyEvent(btn,"click",function()
                {
                    alert("b");
                });
            }
    
            function addMyEvent(obj,ev,fn){
                if (obj.attachEvent) {
                    obj.attachEvent("on"+ev,fn);
                }
                else{
                    obj.addEventListener(ev,fn);
                }
            }
        </script>

     补充:将上一篇文章中的拖拽事件改成线框拖拽效果

    按下鼠标,拖动物体时:

    松开鼠标后:

    <!DOCTYPE html>
    <html>
    <head>
        <title>javascript 拖拽</title>
        <style type="text/css">
        #div1{
             100px;
            height: 100px;
            background: red;
            position: absolute;
        }
        .Box{
            border: 1px dashed black;
            position: absolute;
        }
    </style>
    
    <script type="text/javascript">
        window.onload = function(){
            var oDiv = document.getElementById("div1");
            var disX =0;
            var disY =0;
            oDiv.onmousedown = function(ev){
                //创建虚线框
                var oBox = document.createElement("div");
                oBox.className = "Box";
                oBox.style.width = oDiv.offsetWidth+"px";
                oBox.style.height = oDiv.offsetHeight+"px";
                oBox.style.left = oDiv.offsetLeft+"px";
                oBox.style.top = oDiv.offsetTop+"px";
                document.body.appendChild(oBox);
    
                var oEvent = ev||event;
                disX = oEvent.clientX-oDiv.offsetLeft;
                disY = oEvent.clientY-oDiv.offsetTop;
                if (oDiv.setCapture) {
                //鼠标移动事件
                oDiv.onmousemove = mouseMove;
                oDiv.onmouseup = mouseUp;
                oDiv.setCapture();//ie专用
                return false;
            }else{
                   //鼠标移动
                   document.onmousemove =mouseMove; 
                   document.onmouseup = mouseUp;
                    return false;
                   }
                  //鼠标按下事件
                  function mouseMove(ev){
                       var oEvent  = ev||event;
                       var l = oEvent.clientX-disX;
                       var t = oEvent.clientY-disY;
                       oBox.style.left = l+"px";
                       oBox.style.top = t+"px";
                   };
                //鼠标抬起事件
                function mouseUp()
                {
                    this.onmousemove = null;
                    this.onmouseup = null;
                    if (this.setCapture) 
                    {
                        this.releaseCapture();//ie专用
                    }
                    oDiv.style.left = oBox.offsetLeft+"px";
                    oDiv.style.top = oBox.offsetTop+"px";
                    document.body.removeChild(oBox);
                };
                };
             }
            </script>
        </head>
        <body>
            <div id="div1"></div>
        </body>
        </html>
  • 相关阅读:
    Day1:T1 模拟 T2 拓扑排序
    vijos1060 隔板法
    字符串处理:kmp算法
    vijos1004 博弈论
    vijos1009:扩展欧几里得算法
    有关浮点数的精度问题
    C++构造 下一个排列 的函数
    vijos1053 用spfa判断是否存在负环
    SPFA和FLOYD算法如何打印路径
    细节MARK
  • 原文地址:https://www.cnblogs.com/allencxw/p/8997758.html
Copyright © 2011-2022 走看看