2016-04-13 7 views
-1

Ich erstelle ein Pipe - Spiel, in dem Sie Teile auf das Board ziehen und ablegen, aber ich möchte nicht, dass das Quellelement gelöscht wird, wenn ich es auf die Tafel. Ich kann nicht scheinen, die Javascript-Antwort zu diesem zu finden.Javascript - Drag & Drop, aber Quelle verlassen

<html> 
<head> 
<script> 
var arrayP = ["pics/pipe00.jpg", "pics/pipe01.jpg", "pics/pipe02.jpg"]; 
var randNum; 

function genTable() 
{ 
    randNum= Math.floor((Math.random() * 4) + 0); 
    for(i = 0; i < 4; i++) 
    { 
     document.images[i].src = arrayP[num]; 
    } 
} 


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> 
</head> 
<body> 

<table align="left"> 
<tr> 
    <td> 
      <img id="drag1" src="pics/pipe00.jpg" draggable="true"  ondragstart="drag(event)" width="80" height="80"> 
     </td>  
</tr> 
<tr> 
    <td> 
     <img id="drag1" src="pics/pipe01.jpg" draggable="true" ondragstart="drag(event)" width="80" height="80"> 
    </td> 
</tr> 
<tr> 
    <td> 
     <img id="drag1" src="pics/pipe02.jpg" draggable="true" ondragstart="drag(event)" width="80" height="80"> 
    </td> 
</tr> 
</table> 

<div id="imgBody"> 
    <section> 
    <table align="center"> 
     <tr> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     </tr> 
     <tr> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     </tr> 
     <tr> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     </tr> 
     <tr> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td> 
     </tr> 
    </table> 
    </section> 
</body> 
</html> 
+0

Können Sie ein Codebeispiel von dem, was Sie bisher haben, hinzufügen? –

+0

Die Grundidee besteht darin, dass Sie eine Kopie des Elements erstellen, wenn das Ziehen beginnt, und die Kopie an der alten Position belassen. Es ist sehr schwierig, etwas Spezifischeres zu geben, ohne Code zu sehen. – JJJ

+0

In jQuery enthält das Drop-fähige Widget eine Drop-Option, mit der Sie HTML an das Drop-Ziel anhängen können. Als UX-Nite sollten Sie in den ziehbaren Optionen einen Helfer definieren, damit der Benutzer weiß, dass er eine Kopie des ursprünglichen Objekts zieht. http://api.jqueryui.com/draggable/ http://api.jqueryui.com/droppable/ –

Antwort

-1

Das ist viel besser in jQuery behandelt ...

I a simple use case in JSFiddle erstellt Ihnen das Konzept zeigen. Wenn Sie sich die jQueryUI-API-Links ansehen, die ich in den Kommentaren angegeben habe, werden Sie sehen, dass Sie Zugriff auf eine Vielzahl von Optionen und die rohen JavaScript-Objekte haben, die Sie manipulieren möchten.

Mein Beispiel verwendet <div> Tags, aber leicht modifiziert werden kann Tabellenzeilen verwenden, Zellen usw.

Dies hat jedoch mehr Abhängigkeiten erfordern (was es sieht aus wie sind Sie möglicherweise zu vermeiden versuchen). Wenn nicht, benötigen Sie eine Kopie von jQuery und jQuery UI