JS错误记录 - 事件 - 拖拽
错误总结:
1. var disX = 0; 现在window.onload里声明变量,而不是在事件oDiv.onmousedown里面声明并赋值。
对于这个还不是很明白。
2. onmousedown事件的主体是oDiv,不是整个窗口。
3. if ... else if ... 两个花括号的中间不可以写分号 ; 。
4. oDiv.style.left = l + 'px'; left 值有px。
5. 写法错误。 可视窗的宽度: document.documentElement.clientWidth
if(l<)
{
l = 0;
}
// if(l>oEvent.clientWidth - oDiv.offsetWidth)
else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
{
// l = oEvent.clientWidth - oDiv.offsetWidth l=document.documentElement.clientWidth-oDiv.offsetWidth;
};
<script> window.onload = function()
{
var oDiv = document.getElementById('div1'); var disX = 0; // 为什么在这里声明, 且声明变量为 0 ?
var disY = 0; oDiv.onmousedown = function(ev)
// 不是点击整个窗口时拖拽, 是点击div的时候拖拽
{
var oEvent = ev || event; disX = oEvent.clientX - oDiv.offsetLeft;
disY = oEvent.clientY - oDiv.offsetTop; //window.onmousemove = function(ev) // window.onmouseove 和 document.onmousemove 区别?
document.onmousemove=function (ev)
{
var oEvent = ev || event;
var l = oEvent.clientX - disX // 变量表示div位置的值
var t = oEvent.clientY - disY // 画图,分成 左边顶格, 右边顶格 两种情况考虑。
if(l<0)
{
l=0;
} //; // if 和 else if之间的语句不可以写分号 ; else if(l>document.documentElement.clientWidth - oDiv.offsetWidth)
{
l = document.documentElement.clientWidth - oDiv.offsetWidth;
}; if(t<0)
{
t=0;
}
else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
{
t=document.documentElement.clientHeight-oDiv.offsetHeight;
} oDiv.style.left = l + 'px'; // left 值有px
oDiv.style.top = t + 'px';
}; document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
}; return false; // 阻止默认事件,解决火狐浏览器拖拽空div的bug
};
};
</script>
<script>
window.onload = function()
{
var oDiv = document.getElementById('div1');
var disX = 0;
var disY = 0; oDiv.onmousedown = function(ev)
{
var oEvent = ev||event; disX = oEvent.clientX - oDiv.offsetLeft;
disY = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function(ev)
{
var oEvent = ev||event;
var l = oEvent.clientX - disX;
var t = oEvent.clientY - disY; if(l<0)
{
l = 0;
}
// if(l>oEvent.clientWidth - oDiv.offsetWidth)
else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)
{
// l = oEvent.clientWidth - oDiv.offsetWidth l=document.documentElement.clientWidth-oDiv.offsetWidth;
}; if(t<0)
{
t = 0;
}
else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)
{
t=document.documentElement.clientHeight-oDiv.offsetHeight;
} // if(t>oEvent.clientHeight - oDiv.offsetHeight)
// {
// l = oEvent.clientHeight - oDiv.offsetHeight
// }; oDiv.style.left = l + 'px';
oDiv.style.top = t + 'px';
}; document.onmouseup = function()
{
document.onmousemove = null;
document.onmouseup = null;
}; return false;
};
};
</script>
JS错误记录 - 事件 - 拖拽的更多相关文章
- js div浮动层拖拽效果代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js 实现table表格拖拽和点击表头升降序排序
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
- 纯JS Web在线可拖拽的流程设计器
F2工作流引擎之-纯JS Web在线可拖拽的流程设计器 Web纯JS流程设计器无需编程,完全是通过鼠标拖.拉.拽的方式来完成,支持串行.并行.分支.异或分支.M取N路分支.会签.聚合.多重聚合.退回. ...
- 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽
前言 关于讲解 JS 的拖拽功能的文章数不胜数,我确实没有必要大费周章再写一篇重复的文章来吸引眼球.本文的重点是讲解如何在某些特定的元素上禁止拖拽.这是我在编写插件时遇到的问题,其实很多插件的拖拽功能 ...
- jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题
今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...
- JS利用 Sea.js 实现模块化:拖拽、缩放及范围限制
知识点总结: Sea.js的使用:define.export.seajs.use.require等方法: 参考:http://seajs.org/docs/ Sea.js与require.js的区 ...
- 原生js实现Canvas实现拖拽式绘图,支持画笔、线条、箭头、三角形和圆形等等图形绘制功能,有实例Demo
前言 需要用到图形绘制,没有找到完整的图形绘制实现,所以自己实现了一个 - - 演示地址:查看演示DEMO 新版本支持IE5+(你没看错,就是某软的IE浏览器)以上任意浏览器的Canvas绘图:htt ...
- 原生js实现模块来回拖拽效果
代码比较冗余,还没来得及做整理,往见谅. 主要用到的 JS 事件有: onmousedown:鼠标点下事件 onmousemove:鼠标移动事件 onmouseup:鼠标放开事件 具体代码如下: &l ...
- JS 弹出框拖拽
css代码 body { margin:; text-align: center; } .box { display: none; background-color: #fff !important; ...
随机推荐
- 【Henu ACM Round #13 C】 Ebony and Ivory
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先求出c-bx的所有可能 ->存在map里面 然后枚举y看看ay在不在map里面 在的话就有解. 这样复杂度是\(O(N*lo ...
- [ES2017] Iterate over properties of an object with ES2017 Object.entries()
The Object.entries() function is an addition to the ECMAscript scpec in Es2017. This allows us to it ...
- android 动画xml属性具体解释
/** * 作者:crazyandcoder * 联系: * QQ : 275137657 * email: lijiwork@sina.com * 转载请注明出处! */ android 动画属性具 ...
- Log4j2 与 SpringMVC 整合
log4j2不仅仅是log4j的简单升级,而是整个项目的重构.官网地址:http://logging.apache.org/log4j/2.x/,大家能够从官网的介绍看出它相比log4j第1代的种种长 ...
- 扩展: 简介pyinstaller: py文件压缩成exe文件
写在开始: 后缀 .py 的文件, 必须在装有python解释器, 和相对应的模块下才能运行. 对于装13来说,比较不方便. 如果人家电脑上也装上了python解释器, 说不好一眼就看穿了 自己写的 ...
- ssm框架的总结
ssm对应的是spring+springmvc+mybatis, 一.spring,略. 二.spring mvc是spring提供的mvc模块, 从图中可以看出,springmvc的模块划分非常多, ...
- EF搭建数据库
http://blog.csdn.net/mss359681091/article/details/52135867http://blog.csdn.net/x_craft/article/detai ...
- 【Django】ContentType组件
目录 理解 表结构 使用 @ 好,现在我们有这样一个需求,我们的商城里有很多的商品,然而节日要来了,我们要搞活动. 那么,我们就要设计优惠券,优惠券都有什么类型呢?满减的.折扣的.立减的.等等等... ...
- 洛谷 P1850 换教室
P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...
- oracle 10g standby database 实时应用 redo 数据
-------physical standby database: real-time apply 须要配置 standby redo log: 启用实时应用, 日志应用服务会直接应用接收的redo ...