![](/img/trans.png)
[英]After starting the drag of a DOM element with draggable attribute , Could we stop dragging and exit from drag and drop?
[英]Drag picture but drop name element from a draggable image
在構建拖放頁面時,我希望將圖像拖動到放置區域,但是在放置時,我希望放置一些HTML而不是圖像。
這可能嗎?
也許使用HTML5作為id文本或文件URL。
這是我的代碼:
可拖動元素
<img id="drag1" name="<h1>My Super Image</h1>" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
拖放區
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
我的標題腳本
<script>
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));
}
</script>
我可以將圖像拖到放置區域,但是我想從名稱字段中放置文本而不是圖像。 我怎樣才能做到這一點?
您需要的一切都在問題本身中。 您只需要更改一行代碼:
ev.target.appendChild(document.getElementById(data));
該行告訴瀏覽器將元素與data
指定的ID(可拖動圖片的ID)附加到drop元素中。 對其進行修改,以便將代碼附加在元素的name
屬性中,而不是整個元素。
像這樣:
ev.target.innerHTML += document.getElementById(data).name;
完成此操作后,您將不添加圖像,而是將附加可拖動圖像的name
屬性中的任何內容。
您可以在這里看到它的工作方式:
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.target.innerHTML += document.getElementById(data).name; }
#div1 { border:1px dotted gray; background:#f0f0f0; height:100px; width:100px; margin-bottom:20px; }
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <img id="drag1" name="<h1>My Super Image</h1>" src="http://lorempixel.com/336/69/people" draggable="true" ondragstart="drag(event)" width="336" height="69"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.