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 相关文章推荐
javascript json 新手入门文档
Dec 03 Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
JS实现多物体缓冲运动实例代码
Nov 29 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
浅谈Cookie的生命周期问题
Aug 02 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
Angular 4.x 动态创建表单实例
Apr 25 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
微信小程序实现侧边分类栏
Oct 21 Javascript
浅谈$('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使用者状态管理功能的应用
2006/10/09 PHP
php URL编码解码函数代码
2009/03/10 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python创建临时文件夹的方法
2015/07/06 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
幼儿园实习生辞职信
2014/01/20 职场文书
给全校老师的建议书
2014/03/13 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
大学生实习证明范本
2014/09/19 职场文书
资料员岗位职责
2015/02/10 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
python实战之用emoji表情生成文字
2021/05/08 Python
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python