-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
51 lines (38 loc) · 1.5 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'use strict';
const items = document.getElementsByClassName('item'),
cart = document.getElementById('cart'),
total = document.getElementById('total');
const handlerDragStart = (event) => {
event.target.style.opacity = .5;
event.dataTransfer.setData('text/plain', event.target.id);
}
const handlerDragEnd = (event) => event.target.style.opacity = "";
const handlerDragOver = (event) => event.preventDefault();
const handleDrop = (event) => {
event.preventDefault();
let target = event.target;
while (true) {
if (target.id == "cart") {
let id = event.dataTransfer.getData("text/plain");
let item = document.getElementById(id);
amount = parseInt(item.getAttribute('price'));
cart.dispatchEvent(count);
item.parentNode.removeChild(item);
item.setAttribute("draggable", "false");
target.appendChild(item);
return;
}
target = target.parentNode
}
}
let amount = 0;
const count = new Event('count');
const handleCount = (event) => total.textContent = parseInt(total.textContent) + parseInt(amount);
for (const item of items) {
item.setAttribute("draggable", "true");
item.addEventListener("dragstart", handlerDragStart, false);
item.addEventListener("dragend", handlerDragEnd, false);
}
cart.addEventListener("dragover", handlerDragOver, false);
cart.addEventListener("drop", handleDrop, false);
cart.addEventListener('count', handleCount, false);