J'ajoute dynamiquement des éléments UL à un élément DIV. Je voudrais pouvoir compter le nombre d'éléments UL à l'intérieur du DIV afin qu'une fois que tous les UL soient supprimés dynamiquement, je puisse supprimer le DIV dans lequel ils sont contenus.

<div id="000">

<ul id="000-1">
<li>Stuff</li>
<li>Stuff</li>
</ul>

<ul id="000-2">
<li>Stuff</li>
<li>Stuff</li>
</ul>

</div>

Existe-t-il une solution Javascript simple qui compte le nombre d'UL pour que je puisse faire quelque chose comme ça ..?

if(ulcount == 0){

var remove = document.getElementById("000");
remove.innerHTML = '';
results.parentNode.removeChild("000");

}

Merci.

1
Wez 22 oct. 2011 à 18:51

3 réponses

Meilleure réponse

@ La réponse de Cheeso est une bonne solution pure JS. Mais, si vous utilisez jQuery, le processus peut être simplifié.

jQuery('div#000').children('ul').length;

Le code ci-dessus renverra le nombre d'éléments enfants ul des div#000.

Pour mettre à jour le nombre lorsque vous ajoutez des éléments de manière dynamique, vous devrez créer une fonction et l'appeler pour mettre à jour le numéro chaque fois qu'un changement se produit:

function countUls() {jQuery('div#000').children('ul').length;}

Liez cela à un événement afin qu'il soit appelé lorsque vous souhaitez mettre à jour le numéro.

4
Nathan 22 oct. 2011 à 15:12

Code:

    function getDirectChildrenByTagName(elt,tagname) {
        var allChildren = elt.children, wantedChildren=[], i, L;
        tagname = tagname.toUpperCase();
        for(i=0, L=allChildren.length; i<L; i++) {
            if (allChildren[i].tagName.toUpperCase() == tagname) {
                wantedChildren.push(allChildren[i]);
            }
        }
        return wantedChildren;
    }

Utilisez-le comme ceci:

var zero = document.getElementById("000");  
var uls = getDirectChildrenByTagName(zero, 'UL');
var ulCount = uls.length;
  ....
2
Cheeso 22 oct. 2011 à 14:59

Essaye ça:

var x = document.getElementById("000-1").querySelectorAll("li").length
                  console.log(">>>>", x);
0
Obsidian 1 déc. 2019 à 12:56
7860361