一段JS问题,紧急,在线等
我有一段JS代码可以实现一个DIV的拖动,但是代码指定ID为Floater的对象才可以拖动,我想要改成所有图片都可以拖动,怎么样修改.
大家帮我改一下,100分送,直接能运行的话再加100分.
self.onError=null;
currentX = currentY = 0;
whichIt = null;
lastScrollX = 0; lastScrollY = 0;
NS = (document.layers) ? 1 : 0;
IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->
function heartBeat()
{
if(IE)
{
diffY = document.body.scrollTop;
diffX = document.body.scrollLeft;
}
if(NS)
{
diffY = self.pageYOffset;
diffX = self.pageXOffset;
}
if(diffY != lastScrollY)
{
percent = .1 * (diffY - lastScrollY);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelTop += percent;
if(NS) document.floater.top += percent;
lastScrollY = lastScrollY + percent;
}
if(diffX != lastScrollX)
{
percent = .1 * (diffX - lastScrollX);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelLeft += percent;
if(NS) document.floater.left += percent;
lastScrollX = lastScrollX + percent;
}
}
<!-- /STALKER CODE -->
<!-- DRAG DROP CODE -->
function checkFocus(x,y)
{
stalkerx = document.floater.pageX;
stalkery = document.floater.pageY;
stalkerwidth = document.floater.clip.width;
stalkerheight = document.floater.clip.height;
if( (x > stalkerx && x < (stalkerx+stalkerwidth)) && (y > stalkery && y < (stalkery+stalkerheight)))
return true;
else
return false;
}
function grabIt(e)
{
if(IE)
{
whichIt = event.srcElement;
while (whichIt.id.indexOf( "floater ") == -1)
{
whichIt = whichIt.parentElement;
if (whichIt == null) { return true; }
}
whichIt.style.pixelLeft = whichIt.offsetLeft;
whichIt.style.pixelTop = whichIt.offsetTop;
currentX = (event.clientX + document.body.scrollLeft);
currentY = (event.clientY + document.body.scrollTop);
}
else
{
window.captureEvents(Event.MOUSEMOVE);
if(checkFocus (e.pageX,e.pageY)) {
whichIt = document.floater;
StalkerTouchedX = e.pageX-document.floater.pageX;
StalkerTouchedY = e.pageY-document.floater.pageY;
}
}
return true;
}
function moveIt(e)
{
if (whichIt == null) { return false; }
if(IE)
{
newX = (event.clientX + document.body.scrollLeft);
newY = (event.clientY + document.body.scrollTop);
distanceX = (newX - currentX); distanceY = (newY - currentY);
currentX = newX; currentY = newY;
whichIt.style.pixelLeft += distanceX;
whichIt.style.pixelTop += distanceY;
if(whichIt.style.pixelTop < document.body.scrollTop) whichIt.style.pixelTop = document.body.scrollTop;
if(whichIt.style.pixelLeft < document.body.scrollLeft) whichIt.style.pixelLeft = document.body.scrollLeft;
if(whichIt.style.pixelLeft > document.body.offsetWidth - document.body.scrollLeft - whichIt.style.pixelWidth - 20) whichIt.style.pixelLeft = document.body.offsetWidth - whichIt.style.pixelWidth - 20;
if(whichIt.style.pixelTop > document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5) whichIt.style.pixelTop = document.body.offsetHeight + document.body.scrollTop - whichIt.style.pixelHeight - 5;
event.returnValue = false;
}
else
{
whichIt.moveTo(e.pageX-StalkerTouchedX,e.pageY-StalkerTouchedY);
if(whichIt.left < 0+self.pageXOffset) whichIt.left = 0+self.pageXOffset;
if(whichIt.top < 0+self.pageYOffset) whichIt.top = 0+self.pageYOffset;
if( (whichIt.left + whichIt.clip.width) > = (window.innerWidth+self.pageXOffset-17)) whichIt.left = ((window.innerWidth+self.pageXOffset)-whichIt.clip.width)-17;
if( (whichIt.top + whichIt.clip.height) > = (window.innerHeight+self.pageYOffset-17)) whichIt.top = ((window.innerHeight+self.pageYOffset)-whichIt.clip.height)-17;
return false;
}
return false;
}
function dropIt()
{
whichIt = null;
if(NS) window.releaseEvents (Event.MOUSEMOVE);
return true;
}
<!-- DRAG DROP CODE -->
if(NS)
{
window.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN);
window.onmousedown = grabIt;
window.onmousemove = moveIt;
window.onmouseup = dropIt;
}
if(IE)
{
document.onmousedown = grabIt;
document.onmousemove = moveIt;
document.onmouseup = dropIt;
}
if(NS || IE) action = window.setInterval( "heartBeat() ",1);
[解决办法]
我帮顶
[解决办法]
mark,帮顶
[解决办法]
拖拽的代码很多,为什么要用这个,比如google的拖拽
,yui等等都挺好的,可以下一个看看
[解决办法]
mark
[解决办法]
不會..mark..
[解决办法]
你把对象抽象出来就行了
穿一个参数 object
[解决办法]
var objDel;
var objEdit;
function FillObject()
{
objDel=event.srcElement;
objEdit=event.srcElement;
}
function Notice()
{
if(objDel==null)
{
return;
}
else if(objDel.id.substring(0,3)== 'img '||objDel.id.substring(0,5)== 'Civil ')
{
if(confirm( "您是否要删除 "))
{
var res=Index.DeleteMap(objDel.id);
alert(res.value);
window.location.href= "Index.aspx ";
}
else
{
return;
}
}
else
{
return false;
}
}
function Edit()
{
if(objEdit==null)
{
return;
}
else if(objEdit.id.substring(0,3)== 'img '||objEdit.id.substring(0,5)== 'Civil ')
{
window.open( "Edit.aspx?StrId= "+objEdit.id, "newWin ", "scrollbars=no,width=776,height=600 ");
}
else
{
return;
}
}
</script>
<script language= "javascript ">
Number.prototype.NaN0=function(){return isNaN(this)?0:this;}
var iMouseDown=false;
var dragObject=null;
var curTarget =null;
function makeDragable(item)
{
if(!item) return;
item.onmousedown=function(ev)
{
dragObject=this;
mouseOffset=getMouseOffset(this,ev);
return false;
}
}
function getMouseOffset(target,ev)
{
ev=ev||window.event;
var docPos=getPosition(target);
var mousePos=mouseCoords(ev);
return {x:mousePos.x-docPos.x,y:mousePos.y-docPos.y};
}
function getPosition(e)
{
var left=0;
var top=0;
while(e.offsetParent)
{
left+=e.offsetLeft+(e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top+=e.offsetTop+(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
e=e.offsetParent;
}
left+=e.offsetLeft+(e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top+=e.offsetTop+(e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
return {x:left,y:top};
}
function mouseCoords(ev)
{
if(ev.pageX||ev.pageY)
{
return {x:ev.pageX,y:ev.pageY};
}
return {x:ev.clientX+document.body.scrollLeft-document.body.clientLeft,y:ev.clientY+document.body.scrollTop-document.body.clientTop};
}
function mouseDown(ev)
{
ev=ev||window.event;
var target=ev.target||ev.srcElement;
//获得并显示对象的名称
document.getElementById( 'OpObject ').innerText=target.name;
if(target.onmousedown||target.getAttribute( 'DragObj '))
{
return false;
}
}
function mouseUp(ev)
{
if(dragObject)
{
var lastx=dragObject.style.left;
var lasty=dragObject.style.top;
lastx=lastx.replace( 'px ', ' ');
lasty=lasty.replace( 'px ', ' ');
var objId=dragObject.id.toString()
if(objId.substring(0,3)== 'img ')
{
objId=objId.substring(3,objId.length);
//onmouseup事件触发时说明鼠标已经松开,所以设置down变量值为false
var r = Index.SaveArmyPos(objId,lastx,lasty)
}
else if(objId.substring(0,5)== 'Civil ')
{
objId=objId.substring(5,objId.length);
var r = Index.SaveCivilPos(objId,lastx,lasty)
}
}
dragObject = null;
iMouseDown = false;
}
function mouseMove(ev)
{
ev=ev||window.event;
var target = ev.target || ev.srcElement;
var mousePos = mouseCoords(ev);
if(dragObject)
{
if(dragObject.style)
{
if(ev.clientX <=290||ev.clientY <=85||ev.clientX> 990||ev.clientY> 650)
{
dragObject.style.position= 'absolute ';
dragObject.style.left=dragObject.style.left;
dragObject.style.top= dragObject.style.top;
}
else
{
document.getElementById( 'PosX ').innerText=mousePos.x - mouseOffset.x;
document.getElementById( 'PosY ').innerText=mousePos.y - mouseOffset.y;
dragObject.style.position= 'absolute ';
/*显示对象信息*/
dragObject.style.left=mousePos.x - mouseOffset.x;
dragObject.style.top= mousePos.y - mouseOffset.y;
}
}
}
lMouseState = iMouseDown;
if(curTarget || dragObject) return false;
}
document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup = mouseUp;
window.onload=function()
{
var arrImage=document.getElementsByTagName( 'img ');
for(var i=0;i <arrImage.length;i++)
{
makeDragable(arrImage[i]);
}
}