代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<style type="text/css">
div > div{
display: inline-block;
padding: 10px;
background-color: #aaa;
margin: 3px;
}
</style>
<body>
<div style="width: 600px;border: 1px solid black;" id="like">
<h2>可将喜欢的拖入收藏夹</h2>
<div draggable="true" ondragstart="dsHandler(event)" id="zqj">中秋节</div>
<div draggable="true" ondragstart="dsHandler(event)" id="gqj">国庆节</div>
<div draggable="true" ondragstart="dsHandler(event)" id="yd">元旦</div>
<div draggable="true" ondragstart="dsHandler(event)" id="cj">春节</div>
</div>
<div id="dest" style="width: 400px;height: 260px;border: 1px solid black;float: left;">
<h2 ondragleave="return false;">收藏夹</h2>
</div>
<div id="gb" draggable="false" style="float: left;width: 58px;height: 120px;border: 1px solid black;">垃圾桶</div>
<script>
var like = document.getElementById('like');
var dest = document.getElementById('dest');
//开始拖动事件的事件监听器
var dsHandler = function(evt){
//将被拖动元素的innerHTML属性值设置成被拖动的数据
//在进行拖放操作时,dataTransfer 对象用来保存,通过拖放动作,拖动到浏览器的数据。它可以保存一项或多项数据、一种或者多种数据类型
//
evt.dataTransfer.setData("text/plain","<item>"+ evt.target.innerHTML)
}
// 当把被拖动元素“放”到收藏夹上时激发该方法。
dest.ondrop = function(evt){
evt.preventDefault()
var text = evt.dataTransfer.getData("text/plain")
//如果text以<item>开头
if(text.indexOf("<item>") == 0){
var newEle = document.createElement('div');
//以当前时间为该元素生成一个唯一的ID
newEle.id = new Date().getUTCMilliseconds();
//该元素内容为“拖”过来的数据
newEle.innerHTML = text.substring(6);
//设置该元素允许拖动
newEle.draggable = 'true'
//为该元素的开始拖动事件指定监听器
newEle.ondragstart = function(evt){
evt.dataTransfer.setData("text/plain","<remove>" + newEle.id)
}
dest.appendChild(newEle)
//移动到收藏夹,同时也把上面的移除可以注释看一下区别
let str = document.getElementById(newEle.id).innerHTML
switch (str){
case '中秋节':
like.removeChild(document.getElementById('zqj'))
break;
case '国庆节':
like.removeChild(document.getElementById('gqj'))
break;
case '元旦':
like.removeChild(document.getElementById('yd'))
break;
case '春节':
like.removeChild(document.getElementById('cj'))
break;
}
}
}
// 当把被拖动元素“放”到垃圾桶上时激发该方法。
document.getElementById('gb').ondrop = function(evt){
var id = evt.dataTransfer.getData("text/plain");
console.log(id)
if(id.indexOf('<remove>') == 0){
console.log(id)
var target = document.getElementById(id.substring(8));
dest.removeChild(target);
}
}
document.ondragover = function(evt){
return false;
}
document.ondrop = function(evt){
return false;
}
</script>
</body>
</html>

效果图

最新文章

  1. 一个成功的BI项目实施需要注意哪些?
  2. IIS Express 配置外部访问
  3. MyEclipse优化-六步攻略
  4. linux命令之chmod 2011.11.24转载于网络
  5. CoinPunk项目介绍
  6. Window驱动开发
  7. Autoresizing和AutoLayout
  8. 【mapping】 springmvc的注解mapping无法生效的问题
  9. JavaScript插件 Bootstrap自带了13个jQuery插件,这些插件为Bootstrap中的组件赋予了“生命”
  10. 3D-HEVC/HTM测试序列下载地址(官方完整版)
  11. shell 中的特殊变量
  12. linux 之 shell
  13. ASP.NET Core身份认证服务框架IdentityServer4(2)-整体介绍
  14. Zookeeper集群节点数量为什么要是奇数个?
  15. DataX的使用
  16. mysql5.6.13通用二进制格式安装并使用amoeba实现对mysql5.6数据库读写分离
  17. 一个CTO谈自己的技术架构体系
  18. BZOJ 2005: [Noi2010]能量采集(莫比乌斯反演)
  19. 程序的跟踪debug
  20. Oracle用户和模式,表空间

热门文章

  1. Linux替换文件行首的空白字符
  2. 41-python基础-python3-字符串-转义字符
  3. java虚拟机规范(se8)——java虚拟机的编译(二)
  4. mavenFailed to execute goal org.apache.maven.plugins:maven-surefire-plugin解决方法
  5. 快速上手的Glide4.x教程
  6. 【教程】CentOS 7安装 最新版本Docker
  7. 【CSS3】rgba与opacity
  8. vue撸的demo
  9. Dubbox服务的消费方开发
  10. Tomcat启动后中文乱码,怎么解决这个问题