如何使用HTML5 Drag&;获取源id;滴

如何使用HTML5 Drag&;获取源id;滴,html,Html,我正在拖动一个图像,就像它已经完成一样。 我正在尝试获取div的id,从中开始拖动过程。 我该怎么做? 谢谢。我想我记得拖动()中的ev.srcmelement.id。在drop()上,您可能在浏览器之外获得了一些东西-获取源ID应该是drag()的责任。我想记得drag()中的ev.srceelement.ID。在drop()上,您可能会在浏览器之外获得一些内容-获取源ID应该是drag()的责任。在您链接的示例中,函数drag()由图像节点的onDragStart事件触发。此事件对象被传递给

我正在拖动一个图像,就像它已经完成一样。 我正在尝试获取div的id,从中开始拖动过程。 我该怎么做?
谢谢。

我想我记得
拖动()中的
ev.srcmelement.id
。在
drop()
上,您可能在浏览器之外获得了一些东西-获取源ID应该是
drag()
的责任。

我想记得
drag()
中的
ev.srceelement.ID
。在
drop()
上,您可能会在浏览器之外获得一些内容-获取源ID应该是
drag()
的责任。

在您链接的示例中,函数
drag()
由图像节点的onDragStart事件触发。此事件对象被传递给
drag()
ev
参数,使
drag()
函数可以通过
ev.target
访问事件的目标(即您正在拖动的元素)


由于您有目标,因此可以使用
ev.target.parentNode
访问目标的父节点,并且可以通过
ev.target.parentNode.ID

访问父节点的ID。在链接的示例中,函数
拖动()
由图像节点的onDragStart事件触发。此事件对象被传递给
drag()
ev
参数,使
drag()
函数可以通过
ev.target
访问事件的目标(即您正在拖动的元素)


由于您有目标,您可以使用
ev.target.parentNode
访问目标的父节点,并且您可以通过
ev.target.parentNode.ID

访问父节点的ID。以下是对我有效的方法。。。改编自w3schools.com示例

打开Javascript控制台,查看被拖动项、源和目标id的console.log

  <!DOCTYPE HTML>
  <html>
  <head>
  <style>
  .dropbox {
      width: 350px;
      height: 70px;
      padding: 10px;
      border: 1px solid #aaaaaa;
  }
  </style>
  <script>
  function addEventToClass(cls, fx, node = document, e = 'click') { 
     Array.from(node.querySelectorAll('.' + cls)).forEach(elem => elem.addEventListener(e, fx)); 
  }

  function clickEvent(ev) { console.log('clicked item:', ev.target.id); }
  function allowDrop(ev) { ev.preventDefault(); }

  function drag(ev) {
     var id = ev.target.id;
     ev.dataTransfer.setData("itemid", id);
     var source = id ? document.getElementById(ev.target.id).parentNode.id : '';
     ev.dataTransfer.setData("source", source);
  }

  function drop(ev, target) {
     ev.preventDefault();
     var item = ev.dataTransfer.getData("itemid");
     var source = ev.dataTransfer.getData("source");
     console.log('id of dragged item is:', item);
     console.log('id of source:', source);
     console.log('id of target:', target.id);
     ev.target.appendChild(document.getElementById(item));
  }
  </script>
  </head>
  <body>

  <div id="div1" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
  <div id="drag1" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 1</div>
  <div id="drag2" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 2</div>
  <div id="div2" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>

  <script>
     addEventToClass('dragitem', clickEvent);
  </script>
  </body>
  </html>

.升降箱{
宽度:350px;
高度:70像素;
填充:10px;
边框:1px实心#AAAAA;
}
函数addEventToClass(cls、fx、node=document、e='click'){
from(node.queryselectoral('..+cls)).forEach(elem=>elem.addEventListener(e,fx));
}
函数clickEvent(ev){console.log('clicked item:',ev.target.id);}
函数allowDrop(ev){ev.preventDefault();}
功能阻力(ev){
var id=ev.target.id;
ev.dataTransfer.setData(“itemid”,id);
var source=id?document.getElementById(ev.target.id).parentNode.id:“”;
ev.dataTransfer.setData(“来源”,来源);
}
功能下降(ev,目标){
ev.preventDefault();
var item=ev.dataTransfer.getData(“itemid”);
var source=ev.dataTransfer.getData(“source”);
console.log('被拖动项的id为',项);
console.log('source的id:',source);
log('target的id:',target.id);
ev.target.appendChild(document.getElementById(item));
}
项目1
项目2
addEventToClass('dragitem',clickEvent);

以下是对我有用的东西。。。改编自w3schools.com示例

打开Javascript控制台,查看被拖动项、源和目标id的console.log

  <!DOCTYPE HTML>
  <html>
  <head>
  <style>
  .dropbox {
      width: 350px;
      height: 70px;
      padding: 10px;
      border: 1px solid #aaaaaa;
  }
  </style>
  <script>
  function addEventToClass(cls, fx, node = document, e = 'click') { 
     Array.from(node.querySelectorAll('.' + cls)).forEach(elem => elem.addEventListener(e, fx)); 
  }

  function clickEvent(ev) { console.log('clicked item:', ev.target.id); }
  function allowDrop(ev) { ev.preventDefault(); }

  function drag(ev) {
     var id = ev.target.id;
     ev.dataTransfer.setData("itemid", id);
     var source = id ? document.getElementById(ev.target.id).parentNode.id : '';
     ev.dataTransfer.setData("source", source);
  }

  function drop(ev, target) {
     ev.preventDefault();
     var item = ev.dataTransfer.getData("itemid");
     var source = ev.dataTransfer.getData("source");
     console.log('id of dragged item is:', item);
     console.log('id of source:', source);
     console.log('id of target:', target.id);
     ev.target.appendChild(document.getElementById(item));
  }
  </script>
  </head>
  <body>

  <div id="div1" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
  <div id="drag1" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 1</div>
  <div id="drag2" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 2</div>
  <div id="div2" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>

  <script>
     addEventToClass('dragitem', clickEvent);
  </script>
  </body>
  </html>

.升降箱{
宽度:350px;
高度:70像素;
填充:10px;
边框:1px实心#AAAAA;
}
函数addEventToClass(cls、fx、node=document、e='click'){
from(node.queryselectoral('..+cls)).forEach(elem=>elem.addEventListener(e,fx));
}
函数clickEvent(ev){console.log('clicked item:',ev.target.id);}
函数allowDrop(ev){ev.preventDefault();}
功能阻力(ev){
var id=ev.target.id;
ev.dataTransfer.setData(“itemid”,id);
var source=id?document.getElementById(ev.target.id).parentNode.id:“”;
ev.dataTransfer.setData(“来源”,来源);
}
功能下降(ev,目标){
ev.preventDefault();
var item=ev.dataTransfer.getData(“itemid”);
var source=ev.dataTransfer.getData(“source”);
console.log('被拖动项的id为',项);
console.log('source的id:',source);
log('target的id:',target.id);
ev.target.appendChild(document.getElementById(item));
}
项目1
项目2
addEventToClass('dragitem',clickEvent);