HTML5拖拽事件

任务

拖动网页下方图片到指定地方

js代码
  • 主要代码在ondrop函数中,通过appendChild将图片从一个地方移动到另一个地方

  • 采用document.getElementById(id)**.clone()**不会消除原有图片

function onload()
{
	var set = document.getElementsByName("set");
	var img = document.getElementsByName("img");
	
	for(var i=0;i<img.length;i++)
	{
		img[i].ondragstart=function(e){
			//kaishi
			e.dataTransfer.setData("data",e.target.id);
		}
		img[i].ondrag=function(e){
			//yidong
			e.preventDefault();
		}
		img[i].ondragend=function(e){
			//wancheng
			e.preventDefault();
		}
	}
	
	for(var i=0;i<set.length;i++)
	{
		set[i].ondragenter=function(e){
			e.preventDefault();
		}
		set[i].ondragover=function  (e) {
			//one.innerHTML+="移动";
			e.preventDefault();
		}
		set[i].ondragleave=function  (e) {
			e.preventDefault();
		}

		set[i].ondrop=function  (e) {
			//e.preventDefault();
			//set[j].appendChild(img[j]);
			//console.log(e.target);
			//获取到放在哪个set中
			var realId = e.target.id.toString();
			if(e.target.tapName!="DIV"){
				realId=document.getElementById(realId).parentNode.id;
			}
			var newSet =document.getElementById(realId);
			console.log(newSet);
			//拖拽的是哪个数据
			var id = e.dataTransfer.getData("data");
			var newElem =document.getElementById(id);
			//添加进对应set中
			newSet.appendChild(newElem);
			//newElem.draggable=false;
			
			//e.preventDefault();
		}
	}
	
}
html代码
  • 设置标签的draggable属性为true

  • 属性name作用为方便js中添加拖拽事件,也可以统一用onclick事件代替

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<link rel="stylesheet" href="css/mainUI.css" />
		<script src="js/drag.js"></script>
	</head>
	<body onload="onload()">
		<table cellpadding="10" class="imgUp">
			<tr height="10px" align="center">
				<td>顾客A</td>
				<td>顾客B</td>
				<td>顾客C</td>
			</tr>
			<tr>
				<td width="250px"><div style="border-style: solid; border-color: red; height: 100%;" name="set" id="set1">
						<p id="pat1" style="height: 10px;">放置区</p>
				</div></td>
				<td width="250px"><div style="border-style: solid; border-color: red;height: 100%;" name="set" id="set2">
						<p id="pat2" style="height: 10px;">放置区</p>
				</div></td>
				<td width="250px"><div style="border-style: solid; border-color: red;height: 100%;" name="set" id="set3">
						<p id="pat3" style="height: 10px;">放置区</p>
				</div></td>
			</tr>
		</table>
		
		<table border="0" class="image">
			<tr>
				<td colspan="3" align="center">请选择一下菜品</td>
			</tr>
			<tr>
				<td><img src="img/dl1d.jpg" name="img" id="img1" draggable="true"/></td>
				<td><img src="img/dl2d.jpg" name="img" id="img2" ddraggable="true"/></td>
				<td><img src="img/dl3d.jpg" name="img" id="img3" ddraggable="true"/></td>
			</tr>
			<tr>
				<td><img src="img/js1.jpg" name="img" id="img4" ddraggable="true"/></td>
				<td><img src="img/js2.jpg" name="img" id="img5" ddraggable="true"/></td>
				<td><img src="img/js3.jpg" name="img" id="img6" ddraggable="true"/></td>
			</tr>
		</table>
	</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值