使用 draggable 时获取前一个元素的 ID Javascript
Get ID of the previous element when using draggable Javascript
如何从对象被移动的位置而不是对象被放置的位置获取 div 的 ID?我已经使用这个非常简单的示例来展示我如何获取它所在的当前 ID,但我希望当徽标位于正确的框中时文本显示 div1 - 因为这是它作为父元素的最后一个元素到.
PS。这是我第二次 post 来这里,所以如果你能评论我如何改进我的问题,我会非常高兴。
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
ev.dataTransfer.setData("text", ev.currentTarget.id);
var t= ev.currentTarget.id;
document.getElementById("info").innerHTML=t;
}
#div1, #div2 {
float: left;
width: 100px;
height: 35px;
margin: 10px;
padding: 10px;
border: 1px solid black;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img src="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="info">This is where I want to know from where the element has been moved.</div>
你在哪里...
ev.target.appendChild(document.getElementById(data));
将其替换为...
var elementBeingDragged = document.getElementById(data);
var previousDiv = elementBeingDragged.parentNode; // Get parent DIV before
ev.target.appendChild(elementBeingDragged); // Appending it to new DIV
以下几行不是必需的,但要证明 previousDiv 是它的来源及其 id
previousDiv.style.backgroundColor = "red";
console.log(previousDiv.id);
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var elementBeingDragged = document.getElementById(data);
var previousDiv = elementBeingDragged.parentNode; // Get parent DIV before
ev.target.appendChild(elementBeingDragged); // Appending it to new DIV
previousDiv.style.backgroundColor = "red";
console.log(previousDiv.id);
ev.dataTransfer.setData("text", ev.currentTarget.id);
var t= ev.currentTarget.id;
document.getElementById("info").innerHTML=t;
}
#div1, #div2 {
float: left;
width: 100px;
height: 35px;
margin: 10px;
padding: 10px;
border: 1px solid black;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img src="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="info">This is where I want to know from where the element has been moved.</div>
如何从对象被移动的位置而不是对象被放置的位置获取 div 的 ID?我已经使用这个非常简单的示例来展示我如何获取它所在的当前 ID,但我希望当徽标位于正确的框中时文本显示 div1 - 因为这是它作为父元素的最后一个元素到.
PS。这是我第二次 post 来这里,所以如果你能评论我如何改进我的问题,我会非常高兴。
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
ev.dataTransfer.setData("text", ev.currentTarget.id);
var t= ev.currentTarget.id;
document.getElementById("info").innerHTML=t;
}
#div1, #div2 {
float: left;
width: 100px;
height: 35px;
margin: 10px;
padding: 10px;
border: 1px solid black;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img src="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="info">This is where I want to know from where the element has been moved.</div>
你在哪里...
ev.target.appendChild(document.getElementById(data));
将其替换为...
var elementBeingDragged = document.getElementById(data);
var previousDiv = elementBeingDragged.parentNode; // Get parent DIV before
ev.target.appendChild(elementBeingDragged); // Appending it to new DIV
以下几行不是必需的,但要证明 previousDiv 是它的来源及其 id
previousDiv.style.backgroundColor = "red";
console.log(previousDiv.id);
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var elementBeingDragged = document.getElementById(data);
var previousDiv = elementBeingDragged.parentNode; // Get parent DIV before
ev.target.appendChild(elementBeingDragged); // Appending it to new DIV
previousDiv.style.backgroundColor = "red";
console.log(previousDiv.id);
ev.dataTransfer.setData("text", ev.currentTarget.id);
var t= ev.currentTarget.id;
document.getElementById("info").innerHTML=t;
}
#div1, #div2 {
float: left;
width: 100px;
height: 35px;
margin: 10px;
padding: 10px;
border: 1px solid black;
}
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img src="https://Whosebug.design/assets/img/logos/so/logo-Whosebug.svg" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="info">This is where I want to know from where the element has been moved.</div>