程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了拖放当前元素JS大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决拖放当前元素JS?

开发过程中遇到拖放当前元素JS的问题如何解决?下面主要结合日常开发的经验,给出你关于拖放当前元素JS的解决方法建议,希望对你解决拖放当前元素JS有所启发或帮助;

我有 2 个 div 和 2 个段落。有人能说我怎么能把段落放在当前的div中吗? 例子: 1paragraph --> 1div,但是1paragraph不能去2div。 2paragraph --> 2div,但是2paragraph不能到1div。

我的代码:

var dragClass,dropClass;
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("Text",ev.target.ID);
}

function drop(ev) {
  var data = ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementByID(data));
  ev.preventDefault();
}
#div1 {
  wIDth: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solID #aaaaaa;
}
<div ID="div1" ondrop="drop(event)" ondragover="allowDrop(event)" class="1element"></div>
<div ID="div1" ondrop="drop(event)" ondragover="allowDrop(event)" class="2element"></div>
<br>
<p ID="drag1" draggable="true" ondragstart="drag(event)" class="1element">This is a draggable paragraph. Drag this element into the rectangle.</p>
<p ID="drag1" draggable="true" ondragstart="drag(event)" class="2element">This is a draggable paragraph. Drag this element into the rectangle.</p>

解决方法

你试过吗?

只需设置 divp 标签的唯一 ID。

var dragClass,dropClass;
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("Text",ev.target.id);
}

function drop(ev) {
  var data = ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(data));
  ev.preventDefault();
}
#div1,#div2{
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
   
<html>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)" class="1element"></div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)" class="2element"></div>
<br>
<p id="drag1" draggable="true" ondragstart="drag(event)" class="1element">This is a draggable paragraph. Drag this element into the rectangle.</p>
<p id="drag2" draggable="true" ondragstart="drag(event)" class="2element">This is a draggable paragraph. Drag this element into the rectangle.</p>
</body>
</html>

,

这个问题的答案是:

var dragClass,dropClass;


function allowDrop(ev) {
  dropClass = event.target.classList;
      if(`${dropClass}` === `${dragClass}`) {
        ev.preventDefault();
      } else {}
}

function drag(ev) {
   ev.dataTransfer.setData("Text",ev.target.id);
   dragClass = event.target.classList;
   
}

function drop(ev) {
  var data = ev.dataTransfer.getData("Text");
  ev.target.appendChild(document.getElementById(data));
  ev.preventDefault();
}
#div1 {
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
#div2 {
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)" class="boat"></div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)" class="house"></div>
<br>
<p id="drag1" draggable="true" ondragstart="drag(event)" class="boat">This is a draggable paragraph. Drag this element into the rectangle.</p>
<p id="drag2" draggable="true" ondragstart="drag(event)" class="house">This is a draggable paragraph. Drag this element into the rectangle.</p>
<p id="demo"></p>

,

试试这个。它适用于这一行

@H_766_12@mover.assign('your-div-id') ;

可以有多个带有 style="display:inline-block" 的 div

const mover = {
    target      : null,zMax        : 0,startX      : 0,startY      : 0,pX          : 0,pY          : 0,differenceX : 0,differenceY : 0,step        : 1,assign: function(elementId) {
        mover.target = document.getElementById(elementId) ;
        mover.target.addEventListener('mousedown',mover.moveStart,{once:falsE}) ;
        mover.target.addEventListener('mouSELEave',mover.moved,{once:falsE}) ;
    },setCurrentPosition: function(referencE) {
        let mom      = reference.parentElement ;
        let brothers = Array.from(mom.childNodes) ;
        if(brothers) {
            do{
                brother = brothers.pop() ;
                if(!brother) break ;
                if(brother.style.position) conTinue ;
                let styles = window.getComputedStyle(brother);
                let marginTop  = parseInt(styles['margin-left'],10) ;
                let marginLeft = parseInt(styles['margin-top'],10) ; ;
                brother.style.left = (brother.offsetLeft-marginLeft) + 'px' ;
                brother.style.top  = (brother.offsetTop-marginTop) + 'px' ;
                brother.style.position = 'absolute' ;
            }while(true) ;
        }
    },moveStart: function(event) {
        mover.setCurrentPosition(this) ;
        mover.zMax += mover.step ;
        mover.target.style.zIndex = mover.zMax ;
        mover.startX = this.offsetLeft  ;
        mover.startY = this.offsetTop ;
        mover.pX = event.pageX ;
        mover.pY = event.pageY ;
        mover.target.addEventListener('mousemove',mover.moving,{once:truE}) ;
        mover.target.addEventListener('mouseup',{once:truE}) ;
    },moving: function(event) {
        mover.differenceX = event.pageX - mover.pX  ;
        mover.differenceY = event.pageY - mover.pY ;
        mover.target.style.position = 'absolute' ;
        mover.target.style.left = mover.startX + mover.differenceX + 'px' ;
        mover.target.style.top  = mover.startY + mover.differenceY + 'px' ;
        mover.target.addEventListener('mousemove',moved: function() {
        mover.target.removeEventListener('mousemove',} 

大佬总结

以上是大佬教程为你收集整理的拖放当前元素JS全部内容,希望文章能够帮你解决拖放当前元素JS所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: