Skip to content

Commit 41fdce0

Browse files
committed
Finished Chapter 12 exercise 1
1 parent b2f480c commit 41fdce0

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

ch12exercise1.html

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<title>Chapter 12: Example 1</title>
5+
<style>
6+
[data-drop-target] {
7+
height: 400px;
8+
width: 200px;
9+
margin: 2px;
10+
background-color: gainsboro;
11+
float: left;
12+
}
13+
.drag-enter {
14+
border: 2px dashed #000;
15+
}
16+
.box {
17+
width: 200px;
18+
height: 200px;
19+
}
20+
.navy {
21+
background-color: navy;
22+
}
23+
.red {
24+
background-color: red;
25+
}
26+
</style>
27+
</head>
28+
<body>
29+
<div data-drop-target="true">
30+
<div id="box1" draggable="true" class="box navy"></div>
31+
<div id="box2" draggable="true" class="box red"></div>
32+
</div>
33+
<div data-drop-target="true"></div>
34+
<script>
35+
function handleDragStart(e) {
36+
var data = {
37+
elementId: this.id,
38+
message1: "You moved an element!",
39+
message2: "Try and move me again.",
40+
message3: "Please stop."
41+
};
42+
e.dataTransfer.setData("text", JSON.stringify(data));
43+
}
44+
function handleDragEnterLeave(e) {
45+
if (e.type == "dragenter") {
46+
this.className = "drag-enter";
47+
} else {
48+
this.className = "";
49+
}
50+
}
51+
function handleOverDrop(e) {
52+
e.preventDefault();
53+
if (e.type != "drop") {
54+
return;
55+
}
56+
var json = e.dataTransfer.getData("text");
57+
var data = JSON.parse(json);
58+
var draggedEl = document.getElementById(data.elementId);
59+
if (draggedEl.parentNode == this) {
60+
this.className = "";
61+
return;
62+
}
63+
draggedEl.parentNode.removeChild(draggedEl);
64+
this.appendChild(draggedEl);
65+
this.className = "";
66+
var num = Math.floor(Math.random() * (3));
67+
if (num == 0)
68+
alert(data.message1);
69+
else if (num == 1)
70+
alert(data.message2);
71+
else
72+
alert(data.message3);
73+
}
74+
var draggable = document.querySelectorAll("[draggable]");
75+
var targets = document.querySelectorAll("[data-drop-target]");
76+
for (var i = 0; i < draggable.length; i++) {
77+
draggable[i].addEventListener("dragstart", handleDragStart);
78+
}
79+
for (i = 0; i < targets.length; i++) {
80+
targets[i].addEventListener("dragover", handleOverDrop);
81+
targets[i].addEventListener("drop", handleOverDrop);
82+
targets[i].addEventListener("dragenter", handleDragEnterLeave);
83+
targets[i].addEventListener("dragleave", handleDragEnterLeave);
84+
}
85+
</script>
86+
</body>
87+
</html>

0 commit comments

Comments
 (0)