【利用datatransfer实现多张图片预览】

本文介绍了一种使用HTML5的drag and drop API及FileReader API实现的多张图片拖拽上传并实时预览的方法。通过监听div元素的dragenter、dragover和drop事件,实现了文件的拖放交互,并通过FileReader读取文件内容显示为图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<html>
	<head>
		<meta charset="UTF-8">
		<title>利用datatransfer实现多张图片预览</title>
		<style>
			*{
				margin:0;
			}
			.result{
				width: 200px;
				height: 200px;
				background: red;
			}
		</style>
	</head>
	<body style="margin: 200px;">
		
		<div id="result" class="result">
			
		</div>
		<ul>
			
		</ul>
		<script>
			var oRes = document.getElementById("result")
			var oUl = document.getElementsByTagName("ul")[0]
			var obj = {}
			
			oRes.ondragenter = function(){
				this.innerHTML = "可以放"
			}
			
			oRes.ondragover = function(e){
				e.preventDefault()
			}
			
			oRes.ondrop = function(e){
				e.preventDefault()
				var fs = e.dataTransfer.files
				
				for (var i=0;i<fs.length;i++) {
					var reader = new FileReader()
					reader.readAsDataURL(fs[i])   //多张图片用i   一张用0
					
					reader.onload = function(){
						
						if(!obj[this.result]){   
							var oLi = document.createElement("li")
							var oImg = document.createElement("img")
							oImg.src = this.result
							oImg.width = 100
							oImg.height = 100
							oLi.appendChild(oImg)
							oUl.appendChild(oLi)
							obj[this.result] = this.result
						}else{
							alert("不要重复提交")
						}
					}
				}
			}
			
			

		</script>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值