<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>拖放</title>
<style>
h2 {
font-size: 20px;
color: gray;
}
div#left, div#right {
width: 120px;
height: 300px;
float: left;
margin: 10px 100px 10px 0px;
border: 1px solid #000;
overflow-y: auto;
}
div label {
font-size: 22px;
font-weight: bold;
width: 100%;
display: inline-block;
padding: 4px 0;
text-align: center;
margin: 0px 0 2px 0;
color: #fff;
background-color: gray;
}
</style>
</head>
<body>
<div>
<h2>H5拖放</h2>
<div id="left">
<label draggable="true">A</label>
<label draggable="true">B</label>
<label draggable="true">C</label>
<label draggable="true">D</label>
<label draggable="true">E</label>
</div>
<div id="right"></div>
</div>
<script>
var moveItem = document.getElementsByTagName('label');
for (let i = 0; i < moveItem.length; i++) {
moveItem[i].setAttribute('id', 'label' + i);
moveItem[i].ondragstart = function (ev) {
ev.dataTransfer.setData("Text", this.id);
};
}
document.getElementById('right').ondragover = function (ev) {
console.log('dragover event');
ev.preventDefault();
ev.stopPropagation();
};
document.getElementById('right').ondrop = function (ev) {
ev.preventDefault();
ev.stopPropagation();
var id = ev.dataTransfer.getData('Text');
var elem = document.getElementById(id);
var toElem = ev.target.id;
if (toElem == 'right') {
this.appendChild(elem);
} else {
this.insertBefore(elem, document.getElementById(toElem));
}
}
document.getElementById('left').ondragover = function (ev) {
ev.preventDefault();
};
document.getElementById('left').ondrop = function (ev) {
ev.preventDefault();
ev.stopPropagation();
var id = ev.dataTransfer.getData('Text');
var elem = document.getElementById(id);
var toElem = ev.target.id;
if (toElem == 'left') {
this.appendChild(elem);
} else {
this.insertBefore(elem, document.getElementById(toElem));
}
}
</script>
</body>
</html>
- 示例