收到错误:无法执行' appendChild' on'节点':参数1不是类型'节点'

时间:2015-03-11 04:14:39

标签: javascript jquery dom

我之前见过有这个问题的人,但没有一个答案能让我更好地理解我的问题。

我有一个排序函数,它不是对附加到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;

  });
};

1 个答案:

答案 0 :(得分:1)

您正在混合使用jQuery DOM对象和本机javascript DOM对象。

DOM对象由jQuery选择器返回(和$('#results')。在你的情况下,children())是由jQuery创建的对象,它与javascript DOM对象不同。因此,您不能在本机javascript方法中使用它.appendChild(Node)

由于你正在使用jQuery,我建议你使用.append()方法,所以改变这个

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

到此:

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