JavaScript面向对象编程高级1
来源:互联网 发布:pandora 16.02 软件源 编辑:程序博客网 时间:2024/05/16 07:12
以下案例是通过JavaScript的面向对象编程实现拖拽:
首先:应用面向过程实现,便于修改和对比
一、面向过程实现过程
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> #div1{ width: 200px;height: 200px;background: yellow;position: absolute; } </style></head><body><script> //面向过程的拖拽 window.onload=function(){ var oDiv=document.getElementById('div1'); oDiv.onmousedown=function(ev) { var onEvent=ev||event; var disX=onEvent.clientX-oDiv.offsetLeft; var disY=onEvent.clientY-oDiv.offsetTop; /* alert(disX);//167 alert(disY);//117*/ document.onmousemove=function(ev) { var oEvent=ev||event; oDiv.style.left=oEvent.clientX-disX+'px'; oDiv.style.top=oEvent.clientY-disY+'px'; }; document.onmoseup=function() { document.onmousemove=null; document.onmouseup=null; }; }; };</script><div id="div1"></div></body></html>
二、面向过程转化
//面向过对象的拖拽 第一步:去掉函数嵌套 第二步:提取一部分局部局部变量为全局变量
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> #div1{width: 200px;height: 200px;background: yellow;position: absolute;} </style></head><body><script> var oDiv=null; var disX=0; var disY=0; window.onload=function(){ oDiv=document.getElementById('div1'); oDiv.onmousedown=fnDown; }; function fnDown(ev) { var onEvent=ev||event; disX=onEvent.clientX-oDiv.offsetLeft; disY=onEvent.clientY-oDiv.offsetTop; document.onmousemove=fnMove; document.onmoseup=fnMoveup; }; function fnMove(ev) { var oEvent=ev||event; oDiv.style.left=oEvent.clientX-disX+'px'; oDiv.style.top=oEvent.clientY-disY+'px'; }; function fnMoveup() { document.onmousemove=null; document.onmouseup=null; };</script><div id="div1"></div></body></html>
三、应用面向对象实现
//面向过对象的拖拽 第一步:将onload变为构造函数 第二步:将全局的div做一个属性
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> #div1{width: 200px;height: 200px;background: yellow;position: absolute;} </style></head><body><script> //初始化对象 window.onload=function() { new Drag('div1'); };// var oDiv=null;/*var disX=0;//作为属性var disY=0;//作为属性*/ function Drag(id){ var _this=this; this.disX=0;//作为属性 this.disY=0;//作为属性 this.oDiv=document.getElementById(id);// this.oDiv.onmousedown=this.fnDown; this.oDiv.onmousedown=function(ev) { _this.fnDown(ev); } };Drag.prototype.fnDown=function(ev)//将以下函数用原型修改变成一个方法 // function fnDown(ev) { var _this=this; var onEvent=ev||event; this.disX=onEvent.clientX-this.oDiv.offsetLeft; this.disY=onEvent.clientY-this.oDiv.offsetTop;// document.onmousemove=this.fnMove; document.onmousemove=function(ev) { _this.fnMove(ev); } // document.onmoseup=this.fnMoveup; document.onmouseup=function(ev) { _this.fnMoveup(ev); } }; 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.fnMoveup=function () { document.onmousemove=null; document.onmouseup=null; };</script><div id="div1"></div></body></html>
1 0
- JavaScript面向对象编程高级1
- JavaScript面向对象编程高级2
- javascript高级面向对象
- Javascript 高级面向对象
- JavaScript高级面向对象
- javascript 高级面向对象
- JavaScript面向对象高级
- 面向对象高级编程
- 面向对象高级编程
- 面向对象高级编程
- javascript面向对象编程1
- JavaScript面向对象编程(1)
- javascript面向对象编程-1
- JavaScript高级编程(二)-面向对象程序设计
- JavaScript高级程序设计笔记-面向对象的编程
- 回顾JavaScript高级面向对象
- JavaScript 面向对象编程
- JavaScript 面向对象编程
- Redis的常用命令及高级应用
- 今天落窝C论坛,菜鸟学习好地方
- IDEA参数优化
- 2016.03.07错误记录
- 底层DAO中,使用泛型是 怎么得到传进来 累的真是类型
- JavaScript面向对象编程高级1
- You have new mail in /var/spool/mail/root
- 反弹shell的十种姿势
- UNDO_RETENTION作用
- Programming Language :: Python :: Understanding Twisted Deferred
- Linux音视频(流媒体)
- 在eclipse启动Tomcat服务,但是网页输入http://localhost:8080/报404错误的解决方法
- 【iOS】加密算法整理
- metaq初级1--安装配置