Getting an error: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'

Getting an error: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'

我之前在这里见过遇到这个问题的人,但是 none 的答案帮助我更好地理解了我的问题。

我有一个排序功能,它不是对附加到 DOM 的元素进行排序,而是在控制台中给出错误:Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

除了无法将对象附加到 DOM 因为它们属于不同类型之外,我不明白为什么。

function sorting(){
  $('#sort_by a').click(function(e){
    var sortAttr = $(this).attr('href').slice(1);
    e.preventDefault()

    var bands = $('#results').children();

    bands.sort(function (a, b) {
      if ($(a).attr(sortAttr) > $(b).attr(sortAttr)){
      return 1;
    }
    if ($(b).attr(sortAttr) > $(a).attr(sortAttr)){
      return -1;
    }
    return 0;
  });

  var appendAnim = function(items, index){
    $(items[index]).hide();
    $(items[index]).fadeIn(500);

    document.getElementById('results').appendChild(items[index])

    if(index < items.length ){
      appendAnim(items,index + 1);
    }
  }

  appendAnim(bands,0)
  return false;

  });
};

您混淆了 jQuery DOM 对象和本机 javascript DOM 对象。

DOM 对象 returns 通过 jQuery 选择器(和 $('#results').children() 在你的情况下)是由 [=27= 创建的对象],这与 javascript DOM 对象不同。因此,您不能在本机 javascript 方法 .appendChild(Node)

中使用它

因为你使用的是 jQuery 我建议你使用 .append() 方法,所以改变这个

document.getElementById('results').appendChild(items[index])

对此:

$("#results").append(items[index])