js 拖拽功能 ,可判断是否重叠

来源:互联网 发布:iphone淘宝指纹支付 编辑:程序博客网 时间:2024/04/28 18:15

<body>

<style type="text/css">

    #plane1 {position:absolute; left:290px; top:170px;  z-index:0}

    #plane2 {position:absolute; left:400px; top:250px;  z-index:0}

 #plane3 {position:absolute; left:500px; top:250px;  z-index:0}

</style>

<SCRIPT LANGUAGE="JavaScript">
var isNav, isIE
if (parseInt(navigator.appVersion) >= 4) {
    if (navigator.appName == "Netscape") {
        isNav = true
    } else {
        isIE = true
    }
}
function setZIndex(obj, zOrder) {
 if(isNav)
 {
  obj.style.zIndex=zOrder;
 }else{
  obj.zIndex = zOrder;
 }
 //alert(obj.style.zIndex);
}
function shiftTo(obj, x, y) {
    if (isNav) {
 //obj.MoveTo(x,y);
        obj.style.left = x;
  obj.style.top =y;
    } else {
        obj.pixelLeft = x
        obj.pixelTop = y
    }
}
var selectedObj
var offsetX, offsetY
var divObj;
var moveobj;
function setSelectedElem(evt,name) {
    if (isNav) {
  x=evt.screenX;
  y=evt.screenY;
  moveobj=name;
  selectedObj=moveobj;
  setZIndex(selectedObj,100);
  //alert(name.offsetTop);
  //name.style.top="500px";
  return
    } else {
        var imgObj = window.event.srcElement//
        if (imgObj.parentElement.id.indexOf("plane") != -1) {
   moveobj= imgObj.parentElement;
            selectedObj = imgObj.parentElement.style;
            setZIndex(selectedObj,100);
            return
        }
    }
    selectedObj = null
    return
}
function dragIt(evt) {
    if (selectedObj) {
        if (isNav) {
            shiftTo(selectedObj, (evt.pageX - offsetX), (evt.pageY - offsetY))
   x=moveobj.offsetLeft;
   y=moveobj.offsetTop;
   name=moveobj.id+"";
   setXY(name,x,y);
   return false
        } else {
            shiftTo(selectedObj, (window.event.clientX - offsetX), (window.event.clientY - offsetY))
   //////////////////////
   x=moveobj.offsetLeft;
   y=moveobj.offsetTop;
   name=moveobj.id+"";
   setXY(name,x,y);
   //////////////////////////
            return false
        }
    }
}
function engage(evt,name) {
    setSelectedElem(evt,name)
 //alert(selectedObj);
    if (selectedObj) {  
        if (isNav) {
            offsetX = evt.pageX - moveobj.offsetLeft
   //alert(selectedObj.left);
            offsetY = evt.pageY - moveobj.offsetTop
   //alert(offsetY);
        } else {
            offsetX = window.event.offsetX
            offsetY = window.event.offsetY
        }
  //alert(offsetY);
    }
    return false
}
function release(evt) {
    if (selectedObj) {
  ////////////////////////////////////////////
  if(isNav)
  {
   x=moveobj.offsetLeft//evt.pageX;
   y=moveobj.offsetTop//evt.pageY;
   
  }else{
   x=moveobj.offsetLeft;
   y=moveobj.offsetTop;
  }
  id=moveobj.id;
  //alert(x);
  if(!getsup(id,x,y))
  {
   alert("重叠");
  }
  /////////////////////////////////////////////////////////
        setZIndex(selectedObj, 0)
        selectedObj =null
  moveobj = null
    }
}
function setNavEventCapture() {
    if (isNav) {
        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP)
    }
}
function init() {
    if (isNav) {
        setNavEventCapture()
    }
 
   ///////////////////////////////////////////////
   s=document.all.tags('div');
 //alert(s.length);
 for(i=0;i<s.length;i++)
 {
  //alert(s[i].id.indexOf("plane"));
  if(s[i].id.indexOf("plane") == 0)
  {
   objs=s[i];
   name=objs.id;
   //alert(name);
   x=objs.offsetLeft;
   y=objs.offsetTop;
   w=objs.offsetWidth;
   h=objs.offsetHeight;
   setXY(name,x,y,w,h);
  }
 }
 //msg();
 /////////////////////////////////////////////////
 
    //document.onmousedown = engage;
    document.onmousemove = dragIt
    document.onmouseup = release
 //plane1.style.top="1000px";
}

var a=new Array();
function setXY(name,x,y,w,h)
{
 var b=new Array();
 b[0]=name;
 b[1]=x;
 b[2]=y;
 b[3]=w;
 b[4]=h;
 count=false;
 //alert(a.length);
 for(k=0;k<a.length;k++)
 {
  var c=new Array();
  c=a[k];  
  if(a[k][0]==b[0])
  {
   count=true;
   c[1]=b[1];
   c[2]=b[2];
   if(b[3]!='')
    c[3]=c[3];
   if(b[4]!='')
    c[4]=c[4];
  }
 }
 if(!count)
 {
  a.push(b);
 }
}

function getsup(id,x,y)
{
 for(j=0;j<a.length;j++)
 {
  c=new Array();
  c=a[j];
  if(c[0]!=id)
  {
   getx=Math.abs(x-c[1]);
   gety=Math.abs(y-c[2]);
   //alert(getx);
   //msg();
   //alert(c[3]);
   if(getx>0&&getx<c[3]&&gety>0&&gety<c[4])
   { 
    //alert(c[3]);
    return false;
   }
  }
 }
 //msg();
 return true;
}

function msg()
{
 str='';
  for(i=0;i<a.length;i++)
  {

    str+=a[i][0]+a[i][1]+a[i][2]+"??"+a[i][3]+a[i][4]+"@@";

  }
  alert(str);
}

</SCRIPT>


<body bgcolor="#fef4d9" onLoad="init()">

<DIV ID=plane1 onmousedown="engage(event,this);"><IMG NAME="planePic1" SRC="model.jpg" BORDER=0 id='a'>1</DIV>

<DIV ID=plane2 onmousedown="engage(event,this);"><IMG NAME="planePic1" SRC="model.jpg" BORDER=0 id="b">2</DIV>

原创粉丝点击