如何使用HTML5 Drag&;获取源id;滴
我正在拖动一个图像,就像它已经完成一样。 我正在尝试获取div的id,从中开始拖动过程。 我该怎么做?如何使用HTML5 Drag&;获取源id;滴,html,Html,我正在拖动一个图像,就像它已经完成一样。 我正在尝试获取div的id,从中开始拖动过程。 我该怎么做? 谢谢。我想我记得拖动()中的ev.srcmelement.id。在drop()上,您可能在浏览器之外获得了一些东西-获取源ID应该是drag()的责任。我想记得drag()中的ev.srceelement.ID。在drop()上,您可能会在浏览器之外获得一些内容-获取源ID应该是drag()的责任。在您链接的示例中,函数drag()由图像节点的onDragStart事件触发。此事件对象被传递给
谢谢。我想我记得
拖动()中的ev.srcmelement.id
。在drop()
上,您可能在浏览器之外获得了一些东西-获取源ID应该是drag()
的责任。我想记得drag()
中的ev.srceelement.ID
。在drop()
上,您可能会在浏览器之外获得一些内容-获取源ID应该是drag()
的责任。在您链接的示例中,函数drag()
由图像节点的onDragStart事件触发。此事件对象被传递给drag()
的ev
参数,使drag()
函数可以通过ev.target
访问事件的目标(即您正在拖动的元素)
由于您有目标,因此可以使用ev.target.parentNode
访问目标的父节点,并且可以通过ev.target.parentNode.ID
访问父节点的ID。在链接的示例中,函数拖动()
由图像节点的onDragStart事件触发。此事件对象被传递给drag()
的ev
参数,使drag()
函数可以通过ev.target
访问事件的目标(即您正在拖动的元素)
由于您有目标,您可以使用ev.target.parentNode
访问目标的父节点,并且您可以通过ev.target.parentNode.ID
访问父节点的ID。以下是对我有效的方法。。。改编自w3schools.com示例
打开Javascript控制台,查看被拖动项、源和目标id的console.log
<!DOCTYPE HTML>
<html>
<head>
<style>
.dropbox {
width: 350px;
height: 70px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script>
function addEventToClass(cls, fx, node = document, e = 'click') {
Array.from(node.querySelectorAll('.' + cls)).forEach(elem => elem.addEventListener(e, fx));
}
function clickEvent(ev) { console.log('clicked item:', ev.target.id); }
function allowDrop(ev) { ev.preventDefault(); }
function drag(ev) {
var id = ev.target.id;
ev.dataTransfer.setData("itemid", id);
var source = id ? document.getElementById(ev.target.id).parentNode.id : '';
ev.dataTransfer.setData("source", source);
}
function drop(ev, target) {
ev.preventDefault();
var item = ev.dataTransfer.getData("itemid");
var source = ev.dataTransfer.getData("source");
console.log('id of dragged item is:', item);
console.log('id of source:', source);
console.log('id of target:', target.id);
ev.target.appendChild(document.getElementById(item));
}
</script>
</head>
<body>
<div id="div1" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
<div id="drag1" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 1</div>
<div id="drag2" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 2</div>
<div id="div2" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
<script>
addEventToClass('dragitem', clickEvent);
</script>
</body>
</html>
.升降箱{
宽度:350px;
高度:70像素;
填充:10px;
边框:1px实心#AAAAA;
}
函数addEventToClass(cls、fx、node=document、e='click'){
from(node.queryselectoral('..+cls)).forEach(elem=>elem.addEventListener(e,fx));
}
函数clickEvent(ev){console.log('clicked item:',ev.target.id);}
函数allowDrop(ev){ev.preventDefault();}
功能阻力(ev){
var id=ev.target.id;
ev.dataTransfer.setData(“itemid”,id);
var source=id?document.getElementById(ev.target.id).parentNode.id:“”;
ev.dataTransfer.setData(“来源”,来源);
}
功能下降(ev,目标){
ev.preventDefault();
var item=ev.dataTransfer.getData(“itemid”);
var source=ev.dataTransfer.getData(“source”);
console.log('被拖动项的id为',项);
console.log('source的id:',source);
log('target的id:',target.id);
ev.target.appendChild(document.getElementById(item));
}
项目1
项目2
addEventToClass('dragitem',clickEvent);
以下是对我有用的东西。。。改编自w3schools.com示例
打开Javascript控制台,查看被拖动项、源和目标id的console.log
<!DOCTYPE HTML>
<html>
<head>
<style>
.dropbox {
width: 350px;
height: 70px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script>
function addEventToClass(cls, fx, node = document, e = 'click') {
Array.from(node.querySelectorAll('.' + cls)).forEach(elem => elem.addEventListener(e, fx));
}
function clickEvent(ev) { console.log('clicked item:', ev.target.id); }
function allowDrop(ev) { ev.preventDefault(); }
function drag(ev) {
var id = ev.target.id;
ev.dataTransfer.setData("itemid", id);
var source = id ? document.getElementById(ev.target.id).parentNode.id : '';
ev.dataTransfer.setData("source", source);
}
function drop(ev, target) {
ev.preventDefault();
var item = ev.dataTransfer.getData("itemid");
var source = ev.dataTransfer.getData("source");
console.log('id of dragged item is:', item);
console.log('id of source:', source);
console.log('id of target:', target.id);
ev.target.appendChild(document.getElementById(item));
}
</script>
</head>
<body>
<div id="div1" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
<div id="drag1" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 1</div>
<div id="drag2" class='dragitem' draggable="true" ondragstart="drag(event, this)" width="336" height="69">Item 2</div>
<div id="div2" class='dropbox' ondrop="drop(event, this)" ondragover="allowDrop(event)"></div>
<script>
addEventToClass('dragitem', clickEvent);
</script>
</body>
</html>
.升降箱{
宽度:350px;
高度:70像素;
填充:10px;
边框:1px实心#AAAAA;
}
函数addEventToClass(cls、fx、node=document、e='click'){
from(node.queryselectoral('..+cls)).forEach(elem=>elem.addEventListener(e,fx));
}
函数clickEvent(ev){console.log('clicked item:',ev.target.id);}
函数allowDrop(ev){ev.preventDefault();}
功能阻力(ev){
var id=ev.target.id;
ev.dataTransfer.setData(“itemid”,id);
var source=id?document.getElementById(ev.target.id).parentNode.id:“”;
ev.dataTransfer.setData(“来源”,来源);
}
功能下降(ev,目标){
ev.preventDefault();
var item=ev.dataTransfer.getData(“itemid”);
var source=ev.dataTransfer.getData(“source”);
console.log('被拖动项的id为',项);
console.log('source的id:',source);
log('target的id:',target.id);
ev.target.appendChild(document.getElementById(item));
}
项目1
项目2
addEventToClass('dragitem',clickEvent);