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])
我之前在这里见过遇到这个问题的人,但是 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])