拖动所有Div。 “这个”

时间:2013-05-02 13:46:50

标签: javascript html drag-and-drop

我有DnD这个代码的代码。它适用于特定元素。但是我想让它适用于所有div。我不能将“this.id”引用到move函数。我不缺少让它发挥作用的东西。

window.addEventListener('load', init, false);
function init(){

      //just one element
   /* box = document.getElementById('div1');
    box.addEventListener('mousedown', startMoving, false);
    box.addEventListener('mouseup', stopMoving, false);*/

     //all element?
    box = document.getElementsByTagName('div');
    for (i=0;i<box.length;i++) {
        box[i].addEventListener('mousedown', startMoving, false);
        box[i].addEventListener('mouseup', stopMoving, false);
    }

}

 function startMoving(evt){
   evt = evt || window.event;
   var posX = evt.clientX, 
   posY = evt.clientY,
   a = document.getElementById(this.id);
   divTop = parseInt(a.style.top),
   divLeft = parseInt(a.style.left); 
   var diffX = posX - divLeft, 
   diffY = posY - divTop; 

   document.onmousemove = function(evt){ 
    evt = evt || window.event;
    var posX = evt.clientX, 
    posY = evt.clientY, 
    aX = posX - diffX, 
    aY = posY - diffY;
    move(this.id,aX,aY); 
        }
    }
function stopMoving(){ 
 document.onmousemove = function(){}
 }

  function move(divid,newX,newY){
    var a = document.getElementById(divid);
    a.style.left = newX + 'px';
    a.style.top = newY + 'px';
    }

有更好的方法吗?

0 个答案:

没有答案