2016-10-18 3 views
0

Ich versuche, ein Div-Element (nennen Sie es A) in eine Box B, die ein anderes div ist. Ich möchte ein neues div A in B jedes Mal, wenn ich ein Tropfen in B.Drag & Drop div in HTML5

Eigentlich habe ich so etwas anfügen:

function handleDragStart(e) { 
    e.dataTransfer.effectAllowed = 'move'; 
    e.dataTransfer.setData('application/x-moz-node', e.target); 
} 


function handleDrop(e) { 
    //stuff 
    this.append(e.dataTransfer.getData('application/x-moz-node')); 
    return false; 
} 

Aber wenn ich Drop A in B: [object HTMLDivElement] ist in B anstelle von A angehängt.

Können Sie mir sagen, wo ich falsch liege und ist es der gute Weg, dies zu tun?

Antwort

1

Es gibt zahlreiche Probleme mit und getData und die Cross-Browser-Kompatibilität. Sie sollten nur auf der stummen alten text/plain

verlassen ich Sie gerade die id des div A passieren würde raten und dann:

function handleDragStart(e) { 
    e.dataTransfer.effectAllowed = 'move'; 
    e.dataTransfer.setData('text/plain', e.target.id); 
} 

function handleDrop(e) { 
    var a = document.getElementById(e.dataTransfer.getData('text/plain')); 
    a = a.cloneNode(true); 
    a.id = "a new id here otherwise it is duplicated id"; 
    this.appendChild(a); 

    e.preventDefault(); 
} 

https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode

+0

Könnten Sie bitte auch das Set Teil geben? – Benjamin

+0

Bearbeitet. Dies setzt voraus, dass Sie eine ID-Attribut auf div A natürlich haben – Simon

+0

Ich habe noch ID, aber ich werde einige hinzufügen – Benjamin