Partage
  • Partager sur Facebook
  • Partager sur Twitter

un problème avec length ?

Sujet résolu
    5 janvier 2009 à 22:40:31

    J'ai un petit code qui récupère deux balises <p> ayant la classe "typepiece", dans mon html, via un getElementsByClassName
    Ensuite, je veux lancer une fonction qui gère le clic sur chacun de ces deux paragraphes
    Voici mon code :

    var typePiece = document.getElementsByClassName("typepiece");
    var i = typePiece.length-1;
    addListener(typePiece[i],"click",choixTypePiece);
    				
    function choixTypePiece()
    {
    	typePiece[i].style.background = "blue";
    	if (i==1)
    	{
    		formeAleatoire = false;
    	}
    	else
    	{
    		formeAleatoire = true;
    	}
    	nombrePieces();
    }
    


    ma variable i est sensée remplacer le 0 ou le 1 présent entre les crochets de mon array typePiece. J'utilise length, qui doit être égal à 2, me semble-t-il, puisque j'ai deux <p> avec la class "typepiece". je fais length-1 pour que le chiffre entre crochets soit équivalent au numéro de mes <p>

    ensuite j'ai une fonction addListener qui remplace mon addEventListener et mon attachEvent (et qui fonctionne bien)

    Etrangement, le clic ne fonctionne que sur mon 2e paragraphe, où tout se fait correctement (le fond se colore en bleu, la variable formeAleatoire prend la bonne valeur, et la fonction nombrePieces se lance). Pour le 1er paragraphe, rien ne fonctionne, et je ne comprends pas trop pourquoi. Peut-être pourrez-vous m'aider ?

    J'espère avoir été assez clair, n'hésitez pas à m'en demander plus.
    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2009 à 1:05:43

      Mais... i n'a aucune possibilité de devenir 0... puisqu'il est défini au début à 1 (typePiece.length-1 = 2-1 = 1), et que tu ne le modifies nulle part ailleurs...

      Donc forcément, seul le paragraphe identifié par typePiece[1] est affecté.




      Une dernière chose, je crois que getElementsByClassName n'est pas disponible sous FF2... et pour IE j'en sais rien... Mais bref, mieux vaut utiliser des getElementsByTagName puis tester la class...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 janvier 2009 à 1:39:40

        supporté par FF3, ie8, webkit-je-sais-pas-combien, et opera.

        si t'as besoin de supporter IE6 et IE7, faut faire comme golmote a dit
        • Partager sur Facebook
        • Partager sur Twitter
          6 janvier 2009 à 15:14:23

          Oh, merci pour ces réponses claires :) ! En effet je me suis un peu embrouillé là dedans, je vais corriger tous ces points, mais j'aurais une dernière question, avant de me lancer dedans tête baissée :

          En admettant que mes variables typePiece[0] et typePiece[1] soient créées à partir d'un getElementsByTagName, comment fais-je pour que ma fonction choixTypePiece() fonctionne aussi bien pour typePiece[0] et typePiece[1]? J'ai l'impression que c'est tout bête, et pourtant, je n'y parviens point ! o_O

          Edit : C'est bon, pas la peine de chercher, j'ai trouvé :) merci encore pour votre aide !
          • Partager sur Facebook
          • Partager sur Twitter

          un problème avec length ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown