0

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

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';
    }

有没有更好的方法来做到这一点?

4

0 回答 0