JavaScript拖放;Drop API:拖动了哪个元素?

JavaScript拖放;Drop API:拖动了哪个元素?,javascript,drag-and-drop,Javascript,Drag And Drop,我想我已经知道这个问题的答案了,但我想确认一下 我有许多可拖动的元素,不是所有的类型都相同 我有一个单一的下降目标 当我把一个元素拖到目标上时,我想知道哪个元素掉到了目标上 据我所知,目标元素没有获得该信息,因此唯一的方法是在dragstart事件中设置某种全局(或闭包)变量,然后在另一端使用该变量: var current=null; function dragstart(e) { e.dataTransfer.effectAllowed='all'; e.dataTransf

我想我已经知道这个问题的答案了,但我想确认一下

  • 我有许多可拖动的元素,不是所有的类型都相同
  • 我有一个单一的下降目标
  • 当我把一个元素拖到目标上时,我想知道哪个元素掉到了目标上
  • 据我所知,目标元素没有获得该信息,因此唯一的方法是在
    dragstart
    事件中设置某种全局(或闭包)变量,然后在另一端使用该变量:

    var current=null;
    function dragstart(e) {
        e.dataTransfer.effectAllowed='all';
        e.dataTransfer.setData('text',this.innerHTML);
        current=this;
        e.stopPropagation();
    }
    
    另一种可能是将一些任意数据设置为元素的id:

    function dragstart(e) {
        e.dataTransfer.effectAllowed='all';
        e.dataTransfer.setData('text',this.getAttribute('id'));
        current=this;
        e.stopPropagation();
    }
    
    但这太间接了,而且是命名事物的负担

    这是真的吗?或者有没有一种方法可以让目标在没有所有这些的情况下识别元素

    我需要一个纯JavaScript(没有像jQuery这样的库)的答案

    谢谢