Obtention d'une erreur: échec de l'exécution de 'appendChild' sur 'Node': le paramètre 1 n'est pas de type 'Node'


PanicBus

J'ai déjà vu des gens avec ce problème ici, mais aucune des réponses ne m'a aidé à mieux comprendre mon problème.

J'ai une fonction de tri qui ne trie pas les éléments attachés au DOM, mais qui donne une erreur dans la console: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

Je ne comprends pas pourquoi au-delà du fait qu'il ne peut pas ajouter les objets au DOM car ils sont de types différents.

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;

  });
};
WorldFS

Vous mélangez un objet DOM jQuery et un objet DOM javascript natif.

L'objet DOM renvoyé par le sélecteur jQuery (et $ ('# results'). Children () dans votre cas) est un objet créé par jQuery, qui est différent des objets DOM javascript. Par conséquent, vous ne pouvez pas l'utiliser dans la méthode javascript native .appendChild (Node)

Puisque vous utilisez jQuery, je vous suggère d'utiliser la méthode .append (), alors changez ceci

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

pour ça:

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

Articles connexes