I have 2 boxes and a picture. The user can drag the picture between the 2 boxes. How do I tell which box the picture is dragged from? I tried looking at the parent element of the picture but that didn't work because the HTML doesn't change, I guess.
<!DOCTYPE html>
<html>
<head>
<script>
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function dropone(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var nodeCopy = document.getElementById(data).cloneNode(true);
nodeCopy.id = "newId";
nodeCopy.setAttribute("style", "position:absolute; left:" + ev.x + "px;top:" + ev.y + "px;transform:translate(-" + nodeCopy.width / 2 + "px,-" + nodeCopy.height / 2 + "px)");
ev.target.appendChild(nodeCopy);
}
function drop(ev) {
if (document.getElementById('picture').parentElement.id == 'bluebox') {
alert("YOU DRAGGED FROM THE BLUE BOX!");
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var nodeCopy = document.getElementById(data).cloneNode(true);
nodeCopy.id = "newId";
nodeCopy.setAttribute("style", "position:absolute; left:" + ev.x + "px;top:" + ev.y + "px;transform:translate(-" + nodeCopy.width / 2 + "px,-" + nodeCopy.height / 2 + "px)");
ev.target.appendChild(nodeCopy);
} else if (document.getElementById('picture').parentElement.id == 'redbox') {
alert("YOU DRAGGED FROM THE RED BOX!");
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var nodeCopy = document.getElementById(data).cloneNode(true);
nodeCopy.id = "newId";
nodeCopy.setAttribute("style", "position:absolute; left:" + ev.x + "px;top:" + ev.y + "px;transform:translate(-" + nodeCopy.width / 2 + "px,-" + nodeCopy.height / 2 + "px)");
ev.target.appendChild(nodeCopy);
}
}
</script>
<style>
* {
margin: 0;
padding: 0;
}
.box {
display: block;
height: 300px;
width: 300px;
background-color: red;
}
.boxtwo {
display: block;
height: 300px;
width: 300px;
background-color: lightblue;
}
</style>
</head>
<body>
<span id="redbox" class="box" ondrop="drop(event)" ondragover="allowDrop(event)"></span>
<br />
<span id="bluebox" class="boxtwo" ondrop="drop(event)" ondragover="allowDrop(event)">
<div id="picture" ondrop="drop(event)">
<img src="https://www.w3schools.com/html/img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
</span>
</body>
</html>
Or, view a TryIt here: https://www.w3schools.com/code/tryit.asp?filename=GBYRXSX3L0PP
Thanks in advance!