UPDATED
You can find working exmaple HERE.
Add an id to the both elements (dragged and dropped), after that add attribute draggable = "true" to the element you want to drag.
Now use ondragstart / ondrop to add the instructions your want to do on start of dragging and on dropping the label, and prevent the default action of functions ondragend & ondragover.
Using event.dataTransfer.setData to store the text we want to copy and event.dataTransfer.getData to get the text and past it in the position we want on dropping.
HTML :
<label id="dragSource" draggable = "true">i am new to JavaScript</label>
<p type="text" id="dropTarget">Drop label here</p>
JS :
var dragSource = document.getElementById("dragSource");
dragSource.ondragstart = function(event) {
var dataToCopy = event.target.innerText;
event.dataTransfer.setData("Text", dataToCopy);
return true;
};
var dropTarget = document.getElementById("dropTarget");
dropTarget.ondrop = function(event) {
this.innerText = this.innerText +" "+ event.dataTransfer.getData("Text");
event.preventDefault();
return false;
};
dropTarget.ondragover = function(event) {
event.preventDefault();
return false;
};
dropTarget.ondragend = function(event) {
event.preventDefault();
return false;
};
OR
You can use javascript inline event handlers (knowing that some developers see that it is a bad practice).
HTML :
<label draggable="true" ondragstart="drag(event)">i am new to JavaScript</label>
<p type="text" ondragover="allowDrop(event)" ondrop="drop(event)">i am a student and</p>
JS :
drag = function(ev) {
event.dataTransfer.setData("text", ev.target.innerText);
}
drop = function(ev) {
ev.target.innerText = ev.target.innerText +" "+ event.dataTransfer.getData("Text");
}
allowDrop = function(ev) {
ev.preventDefault();
}
JSFiddle
Source