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 相关文章推荐
找到了一篇jQuery与Prototype并存的冲突的解决方法
Aug 29 Javascript
JavaScript判断一个URL链接是否有效的实现方法
Oct 08 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 Javascript
jQuery实现的跨容器无缝拖动效果代码
Jun 21 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
webpack-dev-server远程访问配置方法
Feb 22 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
js tab效果的实现代码
2009/12/26 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
javaScript语法总结
2016/11/25 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
python提取字典key列表的方法
2015/07/11 Python
解析Python编程中的包结构
2015/10/25 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
python实现三壶谜题的示例详解
2020/11/02 Python
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
行政助理岗位职责范文
2013/12/03 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
python缺失值的解决方法总结
2021/06/09 Python
java如何实现socket连接方法封装
2021/09/25 Java/Android