Drag and drop
How do I make an drag and drop?
What is a drag and drop? How do you make a drag and drop? This script and codes were developed by Anna on 01 December 2022, Thursday.
Drag and drop - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>drag and drop</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <input id='upload' type="file" name="" value=""> <div id="drop"></div> <button id='delete' type="button">刪除</button> <script src="js/index.js"></script>
</body>
</html>
Drag and drop - Script Codes CSS Codes
.over { border: 3px solid red; }
#drop img { height: 60px;
}
Drag and drop - Script Codes JS Codes
const upload = document.querySelector('#upload');
const drop = document.querySelector('#drop');
const deletebtn = document.querySelector('#delete');
let targetElem = null;
let dropImgs = [];
const max = 3;
function startEvent(el) { const target = el.target; target.style.opacity = .5; targetElem = this; el.dataTransfer.setData("text/uri-list", target.src); el.dataTransfer.setData("text/plain", target.dataset.num); el.dataTransfer.effectAllowed = "move";
}
function enterEvent(el) { const target = el.target; el.stopPropagation(); el.preventDefault(); target.classList.add('over')
}
function leaveEvent(el) { const target = el.target; target.classList.remove('over');
}
function endEvent(el) { const target = el.target; target.style.opacity = 1; [].forEach.call(dropImgs, (elem) => { elem.classList.remove('over') })
}
function overEvent(el) { el.stopPropagation(); el.preventDefault(); el.dataTransfer.dropEffect = "move";
}
function dropEvent(el) { el.stopPropagation(); el.preventDefault(); el.target.classList.remove('over'); var dt = el.dataTransfer; var data = dt.getData("text/uri-list"); //copy elem var dataSet = dt.getData("text/plain"); //copy elem var files = dt.files; targetElem.dataset.num = this.dataset.num; //1 targetElem.src = this.src; el.target.dataset.num = dataSet; //0 el.target.src = data;
}
function imgPreview(files) { const fileList = this.files; for(let i = 0; i < fileList.length; i++) { var file = fileList[i]; var imageType = /image.*/; if (!file.type.match(imageType)) { continue; } var img = document.createElement("img"); img.file = file; drop.appendChild(img); var reader = new FileReader(); reader.onload = ( function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img); reader.readAsDataURL(file); reader.addEventListener("load", function (el) { const dropImgs = drop.querySelectorAll('img'); img.setAttribute('data-num', dropImgs.length); if( dropImgs.length >= max) { alert('上傳照片最多三張') upload.style.opacity = 0; } else { upload.style.opacity = 1; }; function addOverEvent(el) { el.stopPropagation(); el.preventDefault(); [].forEach.call(dropImgs, (elem) => { if (elem !== el.target) elem.classList.remove('over') }); el.target.classList.add('over'); }; [].forEach.call(dropImgs, (elem) => { elem.addEventListener('dragstart', startEvent, false); elem.addEventListener('dragenter', enterEvent, false); elem.addEventListener('dragover', overEvent, false); elem.addEventListener('dragleave', leaveEvent, false); elem.addEventListener('dragend', endEvent, false); elem.addEventListener('drop', dropEvent, false); elem.addEventListener('click', addOverEvent, false); }) }) }
};
function deleteEvent(el) { const over = document.querySelector('.over'); const dropImgs = drop.querySelectorAll('img'); let overfiles = 0; if ( over ) { const overDataSet = over.dataset.num; over.remove() }; // console.log(over.classList.contains('over')); [].forEach.call((dropImgs), images => { // console.log(images.classList.contains('over')) if( !images.classList.contains('over') === true ) { overfiles++; if( overfiles <= 3 ) { upload.style.opacity = 1; } } }) // console.log(dropImgs) return dropImgs;
}
upload.addEventListener('change', imgPreview, false);
deletebtn.addEventListener('click', deleteEvent, false)
Developer | Anna |
Username | AnnaLiu |
Uploaded | December 01, 2022 |
Rating | 3 |
Size | 2,706 Kb |
Views | 12,144 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Canvas animate | 1,965 Kb |
Canvas bezia | 1,819 Kb |
Clock | 1,990 Kb |
Canvas rotate | 1,880 Kb |
Canvas arc | 1,692 Kb |
Canvas transition | 1,850 Kb |
Testing | 2,176 Kb |
Array | 1,598 Kb |
A Pen by Anna | 1,828 Kb |
Slider demo | 2,019 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Barber Shop | Bhlaird | 6,270 Kb |
LDE old privacy page | Jasonangle | 2,339 Kb |
A Pen by Brendan Skousen | Bskousen | 2,954 Kb |
JQuery exercise | Brian-baum | 3,780 Kb |
Testing Portfolio Page | Sideshowli | 3,395 Kb |
JavaScript constructors | Simboonlong | 2,415 Kb |
Gears | Synvox | 3,278 Kb |
Calendar | Miroot | 2,033 Kb |
Pure CSS read more toggle | Idered | 2,344 Kb |
Image grid with captions | Mchernin34 | 2,222 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!