如何使用HTML5实现多个元素的拖放功能


当前第2页 返回上一页

加载页面时执行加载功能。load函数中的以下代码将dragover和drop事件分配给[Delete]的div。当元素被拖动到Delete框时,会调用onDragOver函数,当它被删除时,会调用onDrop函数。

1

2

3

var delbox = document.getElementById('del');

  delbox.addEventListener('dragover', onDragOver, false);

  delbox.addEventListener('drop', onDrop, false);

调用querySelectorAll方法以获取ul标记中的li元素。for循环反复处理中获取的元素数组,并将每个元素的“draggable”属性设置为true。此过程将其设置为可拖动对象。它还分配了一个dragstart事件。

1

2

3

4

5

6

var elems = document.querySelectorAll('ul#list1 > li'); 

for (var i = 0; i < elems.length; i++) {

    el = elems[i];

    el.setAttribute('draggable', 'true');

    el.addEventListener('dragstart', onDragStart, false);

  }

拖动列表项时,将调用以下onDragStart函数。调用dataTransfer对象的setData方法以在dataTransfer对象中存储元素的ID。

1

2

3

4

function onDragStart(e) {

      e.dataTransfer.effectAllowed = 'copy';

      e.dataTransfer.setData('text', this.id);

    }

当在拖放区域中拖动列表中的项目时,将调用以下onDragOver函数。由于DragOver没有特别的处理,因此它调用PreventDefault方法来取消事件。

1

2

3

function onDragOver(e) {

      e.preventDefault();

    }

如果列表的项目在拖放区域内被删除,则可以调用onDrop函数。调用stopPropagation方法取消事件的处理。然后,我们从dataTransfer对象中获取ID。通过取得ID,您可以获得丢弃区域中丢弃的元素。调用getElementById方法并从ID中获取LI标记的对象。通过使用获取的LI对象的paerntNode属性访问父节点,调用removeChild方法,删除被丢弃的列表的项目。

1

2

3

4

5

6

function onDrop(e) {     

if (e.stopPropagation) e.stopPropagation();     

var eid = e.dataTransfer.getData('text');     

var elem = document.getElementById(eid);

      elem.parentNode.removeChild(elem);

    }

运行结果:

使用Web浏览器显示上述HTML文件。将显示如下所示的效果。

HTML拖放

可以拖动页面底部列表中的项目。比如拖动“企鹅”这一项,将其拖动到删除区域,然后下面列表项中就没有第三项“企鹅”了,具体效果如下图所示

微信截图_20181201144455.png

HTML5拖放

拖动其他项都是一样的效果,五项都可以删除。

以上就是如何使用HTML5实现多个元素的拖放功能的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

如何使用html5实现多个元素的拖放功能

更多相关阅读请进入《HTML5拖放》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...