Javascript, vérifiez si le nœud enfant est un élément ou un nœud de texte

J'ai un problème avec childNodes comme ci-dessous:

  <ol> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> //childNodes.length = 7 

mais

 <ol><li> Coffee </li><li> Tea </li><li> Coca Cola </li></ol> //childNodes.length = 3 

Il semble que chaque \n ou textnode soit considéré comme un child , comment puis-je les supprimer de childNodes ?

Vous pouvez vérifier si un nœud enfant donné est un nœud de texte ou si vous n'utilisez pas nodeType . Les nœuds de texte auront le nodeType comme 3 . Nous pouvons utiliser le numéro ou le Node.TEXT_NODE constant pour la vérification.

 window.onload = function() { var el = document.getElementsByTagName('ol')[0].childNodes; // using [0] as there is only one ol in the demo console.log('Print with text nodes'); for (var i = 0; i < el.length; i++) { // will output all nodes with "undefined" for text nodes console.log(el[i].innerHTML); } console.log('Print without text nodes'); for (var i = 0; i < el.length; i++) { // will output only non text nodes. if (el[i].nodeType != Node.TEXT_NODE) // or if (el[i].nodeType != 3) console.log(el[i].innerHTML); } } 
 <ol> <li>Coffee</li> <li>Tea</li> <li>Coca Cola</li> </ol> 

Essayez d'utiliser la méthode jquery children
$("#test").children().size()

http://jsfiddle.net/72Ya3/2/