misterunknown: DIV-Element bei Drag and Drop klonen

Beitrag lesen

Moin,

ok, habe ich, liege damit richtig wenn es aber in dieser Lösung ein Elementknoten ist?

Am allerbesten ist es, wenn du dir mal alles in einer Developerkonsole anguckst. Ich mache das beispielsweise so: Ich schreibe das Grundgerüst der Seite und seh sie mir im Chrome an. Dann öffne ich die Konsole (F12) und spiele mit Javascript herum.
Dann kannst du gucken, was wirklich das firstChild deiner Tabellenzelle ist, welche Klassen sie hat (classList), welche Funktion richtig und welche falsch geht, und so weiter.

Schon, wenn in einem Element (quasi hier deine Zelle) ein Leerzeichen steht, gibt es ein firstChild. Soetwas muss man beachten.

Eine Lösung wäre beispielsweise, deine Zelle auszuwählen und zu fragen, ob schon ein Div-Element darin liegt. In meinem Fall würde das so aussehen:

	function drop(ev)  
	{  
		ev.preventDefault();  
		anz = ev.target.getElementsByTagName('img');		  
		if(ev.target.tagName == "DIV" && anz.length == 0) {  
			data=ev.dataTransfer.getData("Text");  
			pic = document.getElementById(data);  
			div = pic.parentNode;  
			if(div.classList[0] != "destdiv") {  
				newPic = pic.cloneNode(true);  
				newId = newPic.id.substring(3);  
				newId++;  
				newPic.id = "pic"+newId;  
				div.appendChild(newPic);  
			}  
			ev.target.appendChild(pic);  
		}

Aber das muss natürlich auf den entsprechenden Anwendungsfall abgestimmt werden.

Grüße Marco