在javascript中拖动并替换DIV

在javascript中拖动并替换DIV,javascript,Javascript,我想在javascript中拖动并替换div。例如:我有两个Div。如果我拖动第二个Div并将其放置在第一个Div上,第一个Div将自动替换到第二个位置。我现在的代码是重叠的 我的aspx页面 <body> <div id="container"> <div id="info"> Start drag process...</div> <div id="square" style="position: rela

我想在javascript中拖动并替换div。例如:我有两个Div。如果我拖动第二个Div并将其放置在第一个Div上,第一个Div将自动替换到第二个位置。我现在的代码是重叠的

我的aspx页面

<body>
<div id="container">
    <div id="info">
        Start drag process...</div>
    <div id="square" style="position: relative; width: 60px; height: 60px; background: #990033;
        border: 2px solid #3399CC;">
    </div>
      <div id="Div1" style="position: relative; width: 60px; height: 60px; background: #efe;
        border: 2px solid #3399CC;">
    </div>
    <script type="text/javascript">

        var square = DragHandler.attach(document.getElementById('square'));

        var Div1 = DragHandler.attach(document.getElementById('Div1'));


    </script>
</div>
* *横穿式拖曳处理器 * * **/

var DragHandler={

// private property.
_oElem : null,


// public method. Attach drag handler to an element.
attach : function(oElem) {
    oElem.onmousedown = DragHandler._dragBegin;

    // callbacks
    oElem.dragBegin = new Function();
    oElem.drag = new Function();
    oElem.dragEnd = new Function();

    return oElem;
},


// private method. Begin drag process.
_dragBegin : function(e) {
    var oElem = DragHandler._oElem = this;

    if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; }
    if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; }

    var x = parseInt(oElem.style.left);
    var y = parseInt(oElem.style.top);

    e = e ? e : window.event;
    oElem.mouseX = e.clientX;
    oElem.mouseY = e.clientY;

    oElem.dragBegin(oElem, x, y);

    document.onmousemove = DragHandler._drag;
    document.onmouseup = DragHandler._dragEnd;
    return false;
},


// private method. Drag (move) element.
_drag : function(e) {
    var oElem = DragHandler._oElem;

    var x = parseInt(oElem.style.left);
    var y = parseInt(oElem.style.top);

    e = e ? e : window.event;
    oElem.style.left = x + (e.clientX - oElem.mouseX) + 'px';
    oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';

    oElem.mouseX = e.clientX;
    oElem.mouseY = e.clientY;

    oElem.drag(oElem, x, y);

    return false;
},


// private method. Stop drag process.
_dragEnd : function() {
    var oElem = DragHandler._oElem;

    var x = parseInt(oElem.style.left);
    var y = parseInt(oElem.style.top);

    oElem.dragEnd(oElem, x, y);

    document.onmousemove = null;
    document.onmouseup = null;
    DragHandler._oElem = null;
}
}


如何做到这一点…

以下是识别部分:

for (var i = 0; i < document.getElementsByClassName("draggable").length; i++) {
    var elem = document.getElementsByClassName("draggable")[i];

    if (elem != oElem) {

        if (oElem.offsetTop + parseInt(oElem.style.height) > elem.offsetTop
           && oElem.offsetTop < elem.offsetTop + parseInt(elem.style.height)) {
            if (oElem.offsetLeft + parseInt(oElem.style.width) > elem.offsetLeft
               && oElem.offsetLeft < elem.offsetLeft + parseInt(elem.style.width)) {
                alert("overlapping");
            }
        }
    }
}
for(var i=0;ielem.offsetTop
&&oElem.offsetTopelem.offsetLeft
&&oElem.offsetLeft
你的部门需要一个“可拖动”的课程。
演示:

您能为我们创建一个工作演示吗?编辑:Nevermind已经创建了一个,我来看看。是的,演示中发生了什么,对我来说发生了同样的事情…我只是想替换div。好了,我为你添加了重叠识别:如果你想替换它,只需将拖动的元素的位置值指定给另一个元素。
element.style.left
element.offsetLeft
。如果使用第一个,请使用
parseInt()
。因为
style.left
返回一个末尾带有“px”的字符串。
for (var i = 0; i < document.getElementsByClassName("draggable").length; i++) {
    var elem = document.getElementsByClassName("draggable")[i];

    if (elem != oElem) {

        if (oElem.offsetTop + parseInt(oElem.style.height) > elem.offsetTop
           && oElem.offsetTop < elem.offsetTop + parseInt(elem.style.height)) {
            if (oElem.offsetLeft + parseInt(oElem.style.width) > elem.offsetLeft
               && oElem.offsetLeft < elem.offsetLeft + parseInt(elem.style.width)) {
                alert("overlapping");
            }
        }
    }
}