js拖拽的原型声明和用法总结


Posted in Javascript onApril 04, 2016

下面是自己写的一个关于js的拖拽的原型声明:代码如下

需要注意的问题包括:

1.this的指向到底是指向谁--弄清楚所指的对象

2.call()方法的使用

3.直接将父级原型赋给子级与使用for将其赋给子级有什么区别?

比如:

for(var i in Drag.prototype)
{
  LimitDrag.prototype[i]=Drag.prototype[i];----------子级发生改变,其父级并不会受到影响
}

 LimitDrag.prototype=Drag.prototype;---------直接将原型赋给子级,会导致当子级发生改变时,其父级也会随之而改变。

代码如下

<html>
<head>
<style>
#div1 {width:100px; height:100px; background:red; position:absolute;}
#div2 {width:100px; height:100px; background:yellow; position:absolute;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>拖拽--面向对象</title>
<script>
window.onload=function()
{
  new Drag('div1');
  new LimitDrag('div2');
}
function Drag(id)
{
   var _this=this;//这个this表示p1
   this.disx=0;
   this.disy=0;
   this.oDiv=document.getElementById(id);
   this.oDiv.onmousedown=function(ev){//按下的时候有个事件,传递给下面的事件
    _this.fnDown(ev);
    return false;
   }
}; 
Drag.prototype.fnDown=function(ev)
{
    var _this=this;
    var oEvent=ev||event;
    this.disx=oEvent.clientX-this.oDiv.offsetLeft;
    this.disy=oEvent.clientY-this.oDiv.offsetTop;
    document.onmousemove=function(ev){//移动的时候有个事件
       _this.fnMove(ev);
    }
    document.onmouseup=function(){
       _this.fnUp();
    }
}; 
 Drag.prototype.fnMove=function(ev)
{
      var oEvent=ev||event;
      this.oDiv.style.left=oEvent.clientX-this.disx+'px';
      this.oDiv.style.top=oEvent.clientY-this.disy+'px';
};
Drag.prototype.fnUp=function()
{
     document.onmousemove=null;
     document.onmouseup=null;
};
//继承Drag的所有属性
function LimitDrag(id)
{
    Drag.call(this,id);//这个this指LimitDrag new的对象
}
//得到Drag的方法,遍历其原型
for(var i in Drag.prototype)
{
  LimitDrag.prototype[i]=Drag.prototype[i];
}
//改变Drag的fnMove的方法
LimitDrag.prototype.fnMove=function(ev)
{
  var oEvent=ev||event;
  var l=oEvent.clientX-this.disx;
  var t=oEvent.clientY-this.disy;
  if(l>document.documentElement.clientWidth-this.oDiv.offsetWidth)
  {
    l=document.documentElement.clientWidth-this.oDiv.offsetWidth;
  }
  else if(l<0)
  {
    l=0;
  }
   if(t>document.documentElement.clientHeight-this.oDiv.offsetHeight)
  {
    t=document.documentElement.clientHeight-this.oDiv.offsetHeight;
  }
  else if(t<0)
  {
    t=0;
  }
   this.oDiv.style.left=l+'px';
   this.oDiv.style.top=t+'px';
}
</script>
</head>
<body>
<div id="div1">
</div>
<div id="div2">
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
可以文本显示的公告栏的js代码
Mar 11 Javascript
经常用到的JavasScript事件的翻译
Apr 09 Javascript
显示js对象所有属性和方法的函数
Oct 16 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
Aug 18 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
Jan 26 Javascript
javascript事件绑定学习要点
Mar 09 Javascript
JQuery为元素添加样式的实现方法
Jul 20 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
原生js+canvas实现贪吃蛇效果
Aug 02 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 #Javascript
javascript制作照片墙及制作过程中出现的问题
Apr 04 #Javascript
javascript拖拽效果延伸学习
Apr 04 #Javascript
javascript事件委托的用法及其好处简析
Apr 04 #Javascript
基于javascript制作微博发布栏效果
Apr 04 #Javascript
纯js实现手风琴效果
Apr 17 #Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 #Javascript
You might like
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
javascript实现支持移动设备画廊
2015/08/24 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Django返回json数据用法示例
2016/09/18 Python
Python中datetime模块参考手册
2017/01/13 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python中的闭包函数
2018/02/09 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python grpc超时机制代码示例
2020/09/14 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
Linux开机引导的步骤是什么
2015/10/19 面试题
安全标语大全
2014/06/10 职场文书
安全标兵事迹材料
2014/08/17 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
小学中等生评语
2014/12/29 职场文书
感谢信格式范文
2015/01/22 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
MySQL多表查询机制
2022/03/17 MySQL