Help JS je deviens fou ! Compter div ayant une classe spécifique

Help JS je deviens fou ! Compter div ayant une classe spécifique - HTML/CSS - Programmation

Marsh Posté le 10-10-2010 à 23:27:55    

Bonjour,
 
Je ne capte rien, ce script est censé compter les div ayant pour classe "menu" mais... il ne marche pas :

Code :
  1. var divs = document.getElementsByTagName("div" ).length;
  2.         for(i = 0; i <= divs; i++){
  3.         if(document.getElementsByTagName("div" )[i].className == "menu" )
  4.             {
  5.             j++;
  6.             }
  7.         }
  8.         alert("Nombre de div correspondant : " + j);

pourquoi :??:

Reply

Marsh Posté le 10-10-2010 à 23:27:55   

Reply

Marsh Posté le 11-10-2010 à 09:25:04    

Woua, je sèche aussi. C'est censé te rassurer.
J'ai essayé tout plein de code et de possibilité mais je n'y arrive pas.
Je connais ça :
javascript:var Html,i;var Obj =document.getElementsByTagName('div');for ( i=0; i < Obj.length; i++){Html += Obj[i].innerHTML;}document.write(Html);

 

Mais même avec ça, j'y arrive pas. Je suis donc intéressé par la réponse :)


Message édité par cetplus le 11-10-2010 à 09:29:01
Reply

Marsh Posté le 11-10-2010 à 09:32:15    

Merci  :cry:
Je comprends vraiment pas ce qui coince. Donc je suis obliger d'indiquer à la main le nombre de div, c'est la loose. Si quelqu'un a la solution...


Message édité par vanquishV12 le 11-10-2010 à 09:32:25
Reply

Marsh Posté le 11-10-2010 à 09:37:52    

Excuse moi, je viens de trouver : (facilement, hein ?? :))

Code :
  1. <script language="Javascript">
  2. <!--
  3. var Html,i;
  4. var Obj =document.getElementsByTagName('div');
  5. var s=0;
  6. for ( i=0; i < Obj.length; i++){
  7. var s=Number(s) + Number(1);
  8. }
  9. alert("Nombres de div : "+s);
  10. //-->
  11. </script>
 

Ensuite il faut ajouter les conditions. Je reviens ...

 

Ok voilà :

Code :
  1. <p><div class="man">a</div>
  2. <p><div class="man"></div>
  3. <p><div class="man"></div>
  4. <p><div class="man"></div>
  5. <p><div class="man"></div>
  6. <p><div class="youpi"></div>
  7. <p><div class="youpi"></div>
  8. <p><div class="youpi"></div>
  9. <p><div class="youpi"></div>
  10. <p><div class="youpi"></div>
  11. <p><div class="youpi"></div>
  12. <p><div class="youpi"></div>
  13. <script language="Javascript">
  14. <!--
  15. var Html,i;
  16. var Obj =document.getElementsByTagName('div');
  17. var s=0;
  18. for ( i=0; i < Obj.length; i++){
  19. if (Obj[i].className == "man" )
  20. {
  21. var s=Number(s) + Number(1);
  22. }
  23. }
  24. alert("Nombres de div : "+s);
  25. //-->
  26. </script>


Par contre pour que le script fonctionne, il faut ajouter une valeur dans une des div.
Tu peux toujours là cacher en indiquant :
<p><div class="man"><textarea style="display:none">a</textarea></div>


Message édité par cetplus le 11-10-2010 à 09:46:33
Reply

Marsh Posté le 11-10-2010 à 09:49:53    

Merci mais je n'ai pas compris ce que ne fonctionnait pas dans mon code!

Reply

Marsh Posté le 11-10-2010 à 09:53:45    

D'abord : var divs = document.getElementsByTagName("div" ).length;
Length ne doit jamais être mis comme "identificateur", c'est un attribut.
Ligne 3 : La reprise document.getElementsByTagName("div" ); vu qu'elle identifié par "divs".
Et apparemment j++; ne serait pas la bonne syntaxe, mais plutôt var j=Number(j) + Number(1); mais je ne peux pas te le garantir.
Je crois que c'est tout et que c'est un sacré capharnaüm dans ma tête.

 

Ah si, aussi for(i = 0; i <= divs; i++){ tu n'a pas mis de length.


Message édité par cetplus le 11-10-2010 à 09:56:54
Reply

Marsh Posté le 11-10-2010 à 10:01:46    

Bon, je vais essayer de comprendre. Merci.

Reply

Marsh Posté le 11-10-2010 à 10:05:29    

Tiens j'ai modifié ton script de base :

Code :
  1. <p><div class="menu">a</div>
  2. <p><div class="menu"></div>
  3. <p><div class="menu"></div>
  4. <p><div class="man"></div>
  5. <script language="Javascript">
  6. <!--
  7. var j=0;
  8. var divs = document.getElementsByTagName("div" );
  9. for(i = 0; i < divs.length; i++){
  10. if(divs[i].className == "menu" )
  11. {
  12. j++;
  13. }
  14. }
  15. alert("Nombre de div correspondant : " + j);
  16. //-->
  17. </script>


 
Compare ! Là il fonctionne. Moi j'ai compris :)

Reply

Marsh Posté le 11-10-2010 à 10:09:04    

Ah donc c'est juste à cause d'une mauvaise utilisation de mon document.getElementsByTagName("div" ).length; !
 
Hé bhé !
 
Merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed