我正在使用 W3schools 建议的 HTML Drag/Drop API ( w3schools html drag/drop api )
我正在尝试制作类似将物体从一个袋子移到另一个袋子的东西。
到目前为止一切正常,除非我以某种方式误点击并将一张图片拖到另一张图片上(而不是拖入 div 中的可用空间)。
然后丢弃的图片正在消失。当我检查 html 代码时,我可以看到删除的 img 位于第一个 img 之下。
我猜可能是因为 js 代码中的“子”元素。那就是我需要帮助的地方。
如何防止这种情况,所以我只能将图像放入 div 而不能放入其他图像?
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
#div1, #div2 {
float: left;
width: 100px;
height: 350px;
margin: 10px;
padding: 10px;
border: 1px solid black;
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<h2>Drag and Drop</h2>
<p>Drag the image back and forth between the two div elements.</p>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">Bag1
<img src="https://www.w3schools.com/html/img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">Bag2
<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" draggable="true" ondragstart="drag(event)" id="drag2" width="88" height="31">
</div>
</body>
</html>