2016-08-16 1 views
0

Ich habe versucht, die Antwort in den ähnlichen Fragen zu suchen, aber ich kann nicht auflösen, Ich weiß, dass der Fehler aufgrund der JQuery, DOM-Konvertierung, aber ich bin nicht in der Lage, das Problem zu beheben, habe ich versucht, append() zu verwenden; anstelle von appendChild() ;. Ich versuche, Drag-and-Drop-Funktionalität zu implementieren.Nicht in der Lage zu lösen: Uncaught TypeError: 'appendChild' auf 'Node' konnte nicht ausgeführt werden: Parameter 1 ist nicht vom Typ 'Node'

Das ist mein javascript: (Die kommentierten ist die Methoden, die ich versucht habe)

$('#todo, #inprog').bind('drop', function(event) { 
    var notecard = event.originalEvent.dataTransfer.getData("text/plain"); 
    event.target.appendChild(document.getElementById(notecard)); 
    // var c = $(document.getElementById(notecard))[0]; 
    // var c = $('#notecard')[0]; 
    //event.target.innerHTML = document.getElementById(notecard); 
    //event.target.append(notecard); 
    //$(event.target).append(document.getElementById(notecard)); 
    //$(event.target).append('#notecard'); 
    //$('#notecard').appendTo(event.target); 
    event.preventDefault(); 
}); 
+0

Der Fehler wird sein, weil 'document.getElementById (notecard)' null zurückgibt, weil es kein Element mit der ID des Werts der 'notecard' -Variable gibt. Was ist der Wert von "Notecard"? Suchen Sie in der Datei, die Sie löschen, nach Leerzeichen/neuen Zeilen. – Matt

Antwort

0

Der Grund ist notecard ist kein node.

einige Änderungen in Ihrem Code Sie

$('#todo, #inprog').bind('drop', function(event) { 
    var notecardText = event.originalEvent.dataTransfer.getData("text/plain"); 
    var notecard = document.createElement("div"); // Create a node first, div or p or span 
    notecard.appendChild(notecardText) // append your text to the node 
    event.target.appendChild(document.getElementById(notecard)); 
    event.preventDefault(); 
}); 
+0

Immer noch nicht gelöst es jetzt gibt es keinen Fehler, aber es funktioniert nicht –

+0

Also dieses Problem gelöst. Überprüfen Sie den Rückgabewert von 'event.originalEvent.dataTransfer.getData (" text/plain ");' null oder nicht. Oder stellen Sie eine jsFiddle –

+0

Ich bekomme immer noch die Ausnahme –

0

die Lösung gefunden, wurde das DOM-Objekt nicht für die Elemente dynamisch und ich rufe die js-Funktion, bevor sie entstehen, so event.originalEvent.dataTransfer.getData("text/plai‌​n"); zurückkehrt null, da es erstellt geladen war kein element vorhanden als die js geladen wurden. Ich habe die Funktion aufgerufen, in der das DOM erstellt wurde, um das Problem zu lösen. '<div id="itemT'+j+'" name="task'+j+'" draggable="true" contenteditable class="cardTitle" ondragstart="dragS1(event)"></div>'

Verwandte Themen