1. 程式人生 > >js面向物件---拖拽

js面向物件---拖拽

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            body{
                position: relative;

            }
            #box{
                position: absolute;
                width
: 150px
; height: 150px; background: #f00; cursor: default; }
#box2{ position: absolute; left: 300px; top: 300px; width: 150px; height: 150px; background
: #00f
; cursor: default; }
</style> </head> <body> <div id="box"></div> <div id="box2"></div> </body> <!--面向過程的寫法--> <!--<script type="text/javascript"> var oBox = document.getElementById('box'); var disX = 0; var disY = 0; oBox.onmousedown = function(ev){ var ev = ev || window.event; var disX = ev.clientX - oBox.offsetLeft; var disY = ev.clientY - oBox.offsetTop; document.onmousemove = function(ev){ var ev = ev || window.event; oBox.style.left = ev.clientX - disX + "px"; oBox.style.top = ev.clientY - disY + "px"; }; document.oonmouseup = function(){ document.onmousemove = null; document.onmouseup = null; }; return false; } </script>-->
<!--面向過程改成面向物件的方法 1、onload裡面建立例項使用方法 2、全域性變數就是屬性 3、函式就是方法 4、改變this指標,this指向object--> <!--面向物件的寫法--> <script type="text/javascript"> window.onload = function(){ var d1 = new Drag('box'); d1.init(); var d2 = new Drag('box2'); d2.init(); } // 建構函式 function Drag(id){ this.oBox = document.getElementById(id); this.disX = 0; this.disY = 0; } //方法 ev事件寫在函式下面 Drag.prototype.init = function(){ var _this = this; this.oBox.onmousedown = function(ev){ var ev = ev || window.event; _this.fnDown(ev); }; } Drag.prototype.fnDown = function(ev){ var _this = this; this.disX = ev.clientX - this.oBox.offsetLeft; this.disY = ev.clientY - this.oBox.offsetTop; document.onmousemove = function(ev){ var ev = ev || window.event; _this.fnMove(ev); }; document.onmouseup = function(){ _this.fnUp(); }; return false; } Drag.prototype.fnMove = function(ev){ this.oBox.style.left = ev.clientX - this.disX + "px"; this.oBox.style.top = ev.clientY - this.disY + "px"; } Drag.prototype.fnUp = function(){ document.onmousemove = null; document.onmouseup = null; } </script> </html>