首页 > 开发 > JS > 正文

JavaScript使用面向对象实现的拖拽功能详解

2024-05-06 16:52:04
字体:
来源:转载
供稿:网友

本文实例讲述了JavaScript使用面向对象实现的拖拽功能。分享给大家供大家参考,具体如下:

面向对象有个前提:

  • 前提:所有东西都必须包含在onload里
  • 改写:不能有函数嵌套,可以有全局变量
  • 过程,如下
    • onload改成构造函数,
    • 全局变量改成属性(通过this)
    • 函数改写成方法
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>面向对象的继承-1</title><style>#div1 {width: 100px; height: 100px; background: red; position: absolute;}</style><script>window.onload = function() {  var oDiv = document.getElementById('div1');  oDiv.onmousedown = function(ev) {    var ev = ev || event;    var disX = ev.clientX - this.offsetLeft;    var disY = ev.clientY - this.offsetTop;    document.onmousemove = function(ev) {      var ev = ev || event;      oDiv.style.left = ev.clientX - disX + 'px';      oDiv.style.top = ev.clientY - disY + 'px';    }    document.onmouseup = function() {      document.onmousemove = document.onmouseup = null;    }  }}</script></head><body>  <div id="div1"></div></body></html>

把局部变量改成全局变量

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>面向对象的继承-2</title><style>#div1 {width: 100px; height: 100px; background: red; position: absolute;}</style><script>var oDiv=null;var disX=0;var disY=0;window.onload = function() {  oDiv = document.getElementById('div1');  oDiv.onmousedown = fnDown;}function fnMove(ev) {  var ev = ev || event;  oDiv.style.left = ev.clientX - disX + 'px';  oDiv.style.top = ev.clientY - disY + 'px';}function fnUp() {  document.onmousemove = document.onmouseup = null;}function fnDown(ev) {  var ev = ev || event;  disX = ev.clientX - this.offsetLeft;  disY = ev.clientY - this.offsetTop;  document.onmousemove = fnMove;  document.onmouseup =fnUp;}</script></head><body>  <div id="div1"></div></body></html>

引用块内容

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>面向对象的继承-2</title><style>#div1 {width: 100px; height: 100px; background: red; position: absolute;}#div2 {width: 100px; height: 100px; background: red; position: absolute;top:120px;}</style><script>window.onload=function(){  new Drag('div1');  new Drag('div2');}function Drag(id) {  var _this=this;  this.disX=0;  this.disY=0;  this.oDiv = document.getElementById(id);  this.oDiv.onmousedown = function(){    _this.fnDown()  };}Drag.prototype.fnDown=function (ev) {  var ev = ev || event;  var _this=this;  this.disX = ev.clientX - this.oDiv.offsetLeft;  this.disY = ev.clientY - this.oDiv.offsetTop;  document.onmousemove = function(){    _this.fnMove();  };  document.onmouseup =function(){    _this.fnUp();  };}Drag.prototype.fnMove=function(ev) {  var ev = ev || event;  this.oDiv.style.left = ev.clientX - this.disX + 'px';  this.oDiv.style.top = ev.clientY - this.disY + 'px';}Drag.prototype.fnUp=function () {  document.onmousemove = null;  document.onmouseup = null}</script></head><body>  <div id="div1"></div>  <div id="div2"></div></body></html>
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>面向对象的继承-2</title><style>#div1 {width: 100px; height: 100px; background: red; position: absolute;}#div2 {width: 100px; height: 100px; background: red; position: absolute;top:120px;}</style><script>window.onload=function(){  new Drag('div1');  new Drag('div2');}function Drag(id) {  var _this=this;  this.disX=0;  this.disY=0;  this.oDiv = document.getElementById(id);  this.oDiv.onmousedown = function(){    _this.fnDown()  };}Drag.prototype.fnDown=function (ev) {  var ev = ev || event;  var _this=this;  this.disX = ev.clientX - this.oDiv.offsetLeft;  this.disY = ev.clientY - this.oDiv.offsetTop;  document.onmousemove = function(){    _this.fnMove();  };  document.onmouseup =function(){    _this.fnUp();  };}Drag.prototype.fnMove=function(ev) {  var ev = ev || event;  this.oDiv.style.left = ev.clientX - this.disX + 'px';  this.oDiv.style.top = ev.clientY - this.disY + 'px';}Drag.prototype.fnUp=function () {  document.onmousemove = null;  document.onmouseup = null}</script></head><body>  <div id="div1"></div>  <div id="div2"></div></body></html>

 

希望本文所述对大家JavaScript程序设计有所帮助。


注:相关教程知识阅读请移步到JavaScript/Ajax教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表