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 URL传中文参数引发的乱码问题
Sep 02 Javascript
向大师们学习Javascript(视频与PPT)
Dec 27 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
javaScript 计算两个日期的天数相差(示例代码)
Dec 27 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
Jun 19 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
jquery实现掷骰子小游戏
Oct 24 jQuery
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 Javascript
详解 TypeScript 枚举类型
Nov 02 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
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
php计算title标题相似比的方法
2015/07/29 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
js获取域名的方法
2015/01/27 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
详解python中的json的基本使用方法
2016/12/21 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
利用python汇总统计多张Excel
2020/09/22 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
建筑设计所实习生自我鉴定
2013/09/25 职场文书
个人租房协议书范本
2014/09/30 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
学校运动会简讯
2015/07/20 职场文书
python 逐步回归算法
2021/04/06 Python