错误总结:

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错误记录 - 事件 - 拖拽的更多相关文章

  1. js div浮动层拖拽效果代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. js 实现table表格拖拽和点击表头升降序排序

    js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...

  3. 纯JS Web在线可拖拽的流程设计器

    F2工作流引擎之-纯JS Web在线可拖拽的流程设计器 Web纯JS流程设计器无需编程,完全是通过鼠标拖.拉.拽的方式来完成,支持串行.并行.分支.异或分支.M取N路分支.会签.聚合.多重聚合.退回. ...

  4. 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽

    前言 关于讲解 JS 的拖拽功能的文章数不胜数,我确实没有必要大费周章再写一篇重复的文章来吸引眼球.本文的重点是讲解如何在某些特定的元素上禁止拖拽.这是我在编写插件时遇到的问题,其实很多插件的拖拽功能 ...

  5. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  6. JS利用 Sea.js 实现模块化:拖拽、缩放及范围限制

    知识点总结: Sea.js的使用:define.export.seajs.use.require等方法:   参考:http://seajs.org/docs/ Sea.js与require.js的区 ...

  7. 原生js实现Canvas实现拖拽式绘图,支持画笔、线条、箭头、三角形和圆形等等图形绘制功能,有实例Demo

    前言 需要用到图形绘制,没有找到完整的图形绘制实现,所以自己实现了一个 - - 演示地址:查看演示DEMO 新版本支持IE5+(你没看错,就是某软的IE浏览器)以上任意浏览器的Canvas绘图:htt ...

  8. 原生js实现模块来回拖拽效果

    代码比较冗余,还没来得及做整理,往见谅. 主要用到的 JS 事件有: onmousedown:鼠标点下事件 onmousemove:鼠标移动事件 onmouseup:鼠标放开事件 具体代码如下: &l ...

  9. JS 弹出框拖拽

    css代码 body { margin:; text-align: center; } .box { display: none; background-color: #fff !important; ...

随机推荐

  1. Maven学习总结(12)——eclipse中构建多模块maven项目

    摘要:本文要用Maven来构建一个多模块的web项目 项目结构如下: system-parent      |----pom.xml      |----system-domain          ...

  2. cogs 1430. [UVa 11300]分金币

    1430. [UVa 11300]分金币 ★☆   输入文件:Wealth.in   输出文件:Wealth.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 圆桌旁坐着 ...

  3. 【v2.x OGE教程 12】 关卡编辑器帮助文档

    ] 关卡编辑器帮助文档 一.简单介绍 关卡编辑器用于游戏关卡界面元素的可视化编辑,包含元素的位置.尺寸以及其他自己定义属性.通过解析生成的数据文件就可以获取关卡信息,并能随时调整.以降低开发工作量,提 ...

  4. js---12对象创建方式,构造器,原型

    <script type="text/javascript"> var o = {}; var o1 = new Object();//这2种方式创建对象是一样的,因为 ...

  5. HDU 2689 Tree

    Tree Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. Gym 100952 G. The jar of divisors

    http://codeforces.com/gym/100952/problem/G G. The jar of divisors time limit per test 2 seconds memo ...

  7. JOISC 2018 Day 2 最差记者3

    JOISC 2018 Day 2 最差记者3 题意: ​ 数轴上有\(N\)个选手和一个旗手,旗手在位置\(0\)<第\(i\)人的位置为\(-i\),每个选手有一个参数\(D_i\).旗手每单 ...

  8. [Angular] How to get Store state in ngrx Effect

    For example, what you want to do is navgiate from current item to next or previous item. In your com ...

  9. jQuery03

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. android图片特效处理之光照效果

    这篇将讲到图片特效处理的光照效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:图片上面的像素点按照给定圆心,按照圆半径的变化,像素点的RGB值分别加上相应的值作为当前点的RGB值. 例: ...