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