JS HTML5实现拖拽移动列表效果


Posted in Javascript onAugust 27, 2020

练习HTML5中的拖放API,实现列表拖拽移动!参考文章:JS HTML5拖拽上传图片预览

HTML5拖拽移动列表实现思路:

 1.循环设置每个子项的draggable属性,以及设置拖动标记(不会多个或全部子项都移动)
 2.每次进入投放区,则检测时候有拖放标记,有则添加dom元素,以此类推

另一种实现思路是:可以利用拖放中DataTransfer对象作为属性,用setData()和getData()方法传递每个拖动的子项的id等数据,找到指定的子项进行移动….待实验。。。

HTML:

//空列表
<div id="box"></div>
//内容列表
<ul id="con">
 <li>第1项</li>
 <li>第2项</li>
 <li>第3项</li>
 <li>第4项</li>
</ul>

JS:

<script>
 function $(id) {
 return document.getElementById(id);
 }
 var con = $("con");
 var box = $("box");
 var liDoms = document.getElementsByTagName("li");
 var i = 0,
 len = liDoms.length;
 //循环设置每个子项的draggable属性,以及时候拖动标记
 for (; i < len; i += 1) {
 liDoms[i].draggable = 'true';
 liDoms[i].flag = false;
 liDoms[i].ondragstart = function() {
 this.flag = true;
 };
 liDoms[i].ondragend = function() {
 this.flag = false;
 };
 }

 //投放区事件
 $("box").ondragenter = function(e) {
 e.preventDefault();
 console.log('进入');

 };
 $("box").ondragover = function(e) {
 e.preventDefault();
 console.log('移动');
 };
 $("box").ondragleave = function(e) {
 e.preventDefault();
 console.log('离开');
 };
 $("box").ondrop = function(e) {

 e.preventDefault();
 for (var i = 0; i < liDoms.length; i += 1) {

 if (liDoms[i].flag) {
 box.appendChild(liDoms[i]);
 }
 }

 console.log('成功');

 };
 //投放区事件
 $("con").ondragenter = function(e) {
 e.preventDefault();
 console.log('进入');

 };
 $("con").ondragover = function(e) {
 e.preventDefault();
 console.log('移动');
 };
 $("con").ondragleave = function(e) {
 e.preventDefault();
 console.log('离开');
 };
 $("con").ondrop = function(e) {

 e.preventDefault();
 for (var i = 0; i < liDoms.length; i += 1) {

 if (liDoms[i].flag) { //此时获得是时box对象下li,而不是原容器的li了
 $("con").appendChild(liDoms[i]);
 }
 }

 console.log('成功');

 };
 </script>

效果图:

JS HTML5实现拖拽移动列表效果

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
js实现双向链表互联网机顶盒实战应用实现
Oct 28 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
跟我学习javascript的undefined与null
Nov 17 Javascript
jQuery实现的网页换肤效果示例
Sep 20 Javascript
微信小程序开发探究
Dec 27 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
微信小程序实现定位及到指定位置导航的示例代码
Aug 20 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 Javascript
vue实现几秒后跳转新页面代码
Sep 09 Javascript
vue的项目如何打包上线
Apr 13 Vue.js
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 #Javascript
浅析JavaScript中的array数组类型系统
Jul 18 #Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 #Javascript
javascript时间差插件分享
Jul 18 #Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 #Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 #Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 #Javascript
You might like
php数组删除元素示例
2014/03/21 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
javascript中如何处理引号编码&amp;#034;
2013/08/15 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Vue.js实现数据响应的方法
2018/08/13 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
详解Python的Django框架中的模版继承
2015/07/16 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python如何实现word批量转HTML
2020/09/30 Python
python selenium 获取接口数据的实现
2020/12/07 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
中秋节超市促销方案
2014/01/30 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
骨干教师个人总结
2015/02/11 职场文书
综合素质自我评价评语
2015/03/06 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python