ondragstart: 用户开始拖动元素时触发
ondrag: 元素正在拖动时触发
ondragend: 用户完成元素拖动后触发
ondragenter: 当被鼠标拖动的对象进入其容器范围内时触发此事件
ondragover: 当某被拖动的对象在另一对象容器范围内拖动时触发此事件
ondragleave: 当被鼠标拖动的对象离开其容器范围内时触发此事件
ondrop: 在一个拖动过程中,释放鼠标键时触发此事件
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
//获取当前拖动元素ID,并设置到DataTransfer中
ev.dataTransfer.setData("id", ev.target.id);
var dragID = ev.target.id;
//获取当前拖动元素的innerHTML,并设置到DataTransfer中
ev.dataTransfer.setData("text", document.getElementById(dragID).innerHTML);
ev.dataTransfer.setData("name", document.getElementById(dragID).title);
}
function drop(ev) {
ev.preventDefault();
//获取DataTransfer中的ID值
var dragID = ev.dataTransfer.getData("id");
var dragText = ev.dataTransfer.getData("text");
var dragName = ev.dataTransfer.getData("name");
//获取目标元素的id;
var id = ev.target.id;
//将字符串分割为数组
var arr = id.split("");
if (arr[0] == 'p') {
var forid = document.getElementById(id).getAttribute("for");
document.getElementById(forid).dataset.channel = dragID;
}
arr[0] = 'p';
//将数组合并为字符串
var pID = arr.join("");
//p标签显示为被拖动标签的名称
document.getElementById(pID).innerHTML = dragName;
//input元素赋值为物理通道ID
//document.getElementById(id).value = dragID;
//将物理通道保存到data-content中
document.getElementById(id).dataset.channel = dragID;
//修改title与通道相同
document.getElementById(pID).title = dragText;
//dic_cfg[id] = dragID;
}
<div class="droptarget" ondrop="drop(event)" ondragover="allowDrop(event)">
<p ondragstart="drag(event)" draggable="true" id="dragtarget">拖动我!</p>
</div>
<div class="droptarget" ondrop="drop(event)" ondragover="allowDrop(event)"></div>