2016-08-16 122 views
0

我试过寻找类似问题的答案,但我无法解决,我知道错误是由于jQuery,DOM转换,但我无法解决这个问题,我试图使用append();而不是appendChild();.我正在尝试实现拖放功能。无法解决:Uncaught TypeError:无法执行'节点'上的'appendChild':参数1不是'节点'类型

这是我的javascript:(注释的是我已经试过的方法)

$('#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

该错误将是因为'document.getElementById(notecard)'返回null,因为没有元素具有'notecard'变量值的id。 'notecard'的价值是什么?检查您要删除的文件中是否有空格/新行。 – Matt

回答

0

原因是notecard是不是一个node

不要在你的代码

$('#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

现在仍然没有解决它没有错误,但它不起作用 –

+0

所以这个问题解决了。检查'event.originalEvent.dataTransfer.getData(“text/plain”);'null'的返回值。或者提供一个jsFiddle –

+0

我仍然收到异常 –

0

找到了解决办法,没有被加载动态创建元素的DOM对象和我打电话,他们被创建之前的JS功能,所以event.originalEvent.dataTransfer.getData("text/plai‌​n");被返回null,因为有一些变化当js加载时没有元素存在。我调用DOM创建的函数来解决问题。 像这样'<div id="itemT'+j+'" name="task'+j+'" draggable="true" contenteditable class="cardTitle" ondragstart="dragS1(event)"></div>'

相关问题