我之前见过有这个问题的人,但没有一个答案能让我更好地理解我的问题。
我有一个排序函数,它不是对附加到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;
});
};
答案 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])