html5实现目标拖放

3 篇文章 0 订阅


<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
		</style>
		<script>
		     function drag1(ev){
		     	//dataTransfer.setData() 方法设置被拖数据的数据类型和值,也就是设置对象ev的id为Text类型并等待getData()方法的调用
		     	ev.dataTransfer.setData("Text",ev.target.id);
		     }
		     function allowDrop(ev){
		     	//调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
		     	ev.preventDefault();
		     }
		     function drop(ev){
		        ev.preventDefault();
		        //通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
		     	var data=ev.dataTransfer.getData("Text");
		     	//通过img元素的id--data来获得img元素并放置于div元素中
		     	ev.target.appendChild(document.getElementById(data));
		     
		     }
		</script>
	</head>
	<body>
		<div id="div1" style="border: 1px red solid;width: 300px;height: 300px;"οndragοver="allowDrop(event)" οndrοp="drop(event)"></div>
	    <img id="img1" src="img/3.gif" style="width: auto; height: 100px;" draggable="true"
	    	οndragstart="drag1(event)"/>
	    	
	</body>
</html>
以上是w3c文档中所推荐的方法,其中有对dataTransfer.setData()和dataTransfer.getData()的使用,其具体解释我已在程序中标明,下面,我将在不使用 dataTransfer.setData()和dataTransfer.getData()的情况下同样实现目标的拖放功能。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
		</style>
		<script>
                   function allowDrop(ev){
		       //调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
		     	ev.preventDefault();
		     }
		     function drop(ev){
		        ev.preventDefault();
                       //通过img元素的id--img1来获得img元素并放置于div元素中
		     	ev.target.appendChild(document.getElementById('img1'));
		     
		     }
		</script>
	</head>
	<body>
		<div id="div1" style="border: 1px red solid;width: 300px;height: 300px;"οndragοver="allowDrop(event)" οndrοp="drop(event)"></div>
	    <img id="img1" src="img/3.gif" style="width: auto; height: 100px;" draggable="true"
	    	/>
	    	
	</body>
</html>



以上两种方法均可以实现拖放,但是前者的拖放有数据交互,可以使拖放更有意义和价值。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值