向Number添加属性以确定当前数据类型是否为数字
Number.prototype.NaN0=function () returnIsnan(this )? 0:this; }
//全局变量
var iMouseDown=false;
var拖动对象=null;
//获取鼠标偏移(对象2-对象1 ) )。
函数模块偏移(target,ev )。
{
ev=ev||window.event;
vardocpos=获取位置(target );
varmousepos=mousecoords(ev;
return { x : mouse pos.x-doc pos.x,y:mousePos.y-docPos.y};
}
//获取事件发生的实际位置--------对象1
功能获取位置(e )
{
var left=0;
var top=0;
//累积相对位置得到实际位置
wile(e.offsetparent ) )。
{
left=e.offsetleft (e.current style? (parseint (e.current style.borderleftwidth ) ).NaN0) :0 );
top=e.offsettop(e.currentstyle? (parseint (e.current style.bordertopwidth ) (.NaN0) ) :0 );
e=e.offsetParent;
}
left=e.offsetleft (e.current style? (parseint (e.current style.borderleftwidth ) ).NaN0) :0 );
top=e.offsettop(e.currentstyle? (parseint (e.current style.bordertopwidth ) (.NaN0) ) :0 );
返回{ x : left,y:top};
}
//事件发生的鼠标位置--------对象2
是功能模块代码(ev )
{
if(ev.pagex||ev.pagey ) )
{
return {x:ev.pageX,y:ev.pageY};
}
return { x : ev.clientx document.body.scroll left-document.body.client left,y : ev.clienty document.body.sody
}
//定义可以拖动的对象
功能标记可移植(item ) )。
{
if (! 返回;
//如何定义可拖动对象的onmousedown事件
ev=window.event;
item.() nm ) used (wn=function ) ev )
{
拖动对象=this;
mouse offset=getmouseoffset (this,ev );
返回假;
}
}
//定义在鼠标点下调用的方法
是功能模块(ev )
{
ev=ev||window.event;
var target=ev.target|| ev.srcelement;
if (target.onmousedown|| target.getattribute (' dragobj ' ) ) ) )
{
返回假;
}
}
//抬起鼠标后释放对象
功能模块(ev )。
{
拖动对象=null;
当触发//onmouseup事件时,将down变量的值设置为false,因为它指示鼠标已离开
iMouseDown=false;
}
//鼠标移动
是功能移动(ev )
{
ev=ev||window.event;
var target=ev.target|| ev.srcelement;
varmousepos=mousecoords(ev;
是拖动对象(if )
{
if (拖动对象.样式) )。
{
//移动对象
drag object.style.left=mouse pos.x-mouse offset.x;
drag object.style.top=mouse pos.y-mouse offset.y;
}
}
//lMouseState=iMouseDown;
拖动对象(if )返回假;
}
document.nmusedwn=mouseDown;
document.nmusemve=mouseMove;
document.nmuseup=mouseUp;
功能移动(
{
varimg1=document.getelementbyid (img1);
makedragable(img1;
}