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在一段文字中的光标处插入其他文字
Aug 26 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
React入门教程之Hello World以及环境搭建详解
Jul 11 Javascript
js实现本地图片文件拖拽效果
Jul 18 Javascript
VsCode插件整理(小结)
Sep 14 Javascript
angular中不同的组件间传值与通信的方法
Nov 04 Javascript
vue获取dom元素注意事项
Dec 28 Javascript
Vue 与 Vuex 的第一次接触遇到的坑
Aug 16 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
Sep 04 Javascript
JavaScript代码简化技巧实例解析
Sep 09 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现划词翻译
2020/04/23 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
详解Python3定时器任务代码
2019/09/23 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
Python实现上下文管理器的方法
2020/08/07 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
九年级数学教学反思
2014/02/02 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
棉花姑娘教学反思
2014/02/15 职场文书
期末学生评语大全
2014/04/24 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书