无法解决:未捕获的TypeError:无法执行' appendChild' on'节点':参数1不是类型'节点'

时间:2016-08-16 08:21:15

标签: javascript jquery

我试过在类似的问题中寻找答案,但我无法解决,我知道错误是由于jquery,DOM转换,但我无法解决问题,我试图使用追加();而不是appendChild();.我正在尝试实现拖放功能。

这是我的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(); 
});

2 个答案:

答案 0 :(得分: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(); 
});

答案 1 :(得分: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>'