Page 1 sur 1

Aide Javascript: plein d'éléments?

Publié : 16 juin 2004, 16:53
par DJiK
(Puisque Calimo est trop mauvais pour m'aider. :P)


Voilà, j'aimerai changer plusieurs éléments sur ma page d'un seul coup. Mais je ne connais que la fonction document.getElementById(id).

Est-ce qu'il y aurait un moyen de faire une sorte de getElementById(*)? :?

Publié : 16 juin 2004, 23:57
par chBok
Oui, si tes éléments utilisent la même balise, tu peux lire le tableau renvoyé par getElementsByTagName() en faisant une boucle.

Sinon, tu crées un tableau de tes IDs, tu boucles sur ce tableau pour lire et modifier chaque élément avec getElementById()

Publié : 17 juin 2004, 10:22
par DJiK
Oui c'est bien getElementsByTagName mais j'en ai d'autres (des span).


Est-ce que je peux faire un truc du style:

Code : Tout sélectionner

function cachetout()
{
      var tout = document.getElementsByTagName("span");
      for (var i=0; i<tout.length; i++)
      {
            var un = tout[i];
            if (un.class == "contenu" ou un.id (commence par) "contenu" ou  ???)
                  un.style.display="none";
      }
}


J'ai essayé de leur mettre un attribut name="contenu", là avec getElementsByName (sans Tag) ça marche nickel, mais il n'y a pas d'attibut name sur la balise <span>. :x

Merci de ton aide. :)

Publié : 17 juin 2004, 10:53
par DJiK
En fait j'ai eu une idée de génie: je les ai tous entouré dans une balise <var>.

C'est pas très approprié, mais c'est valide et je suis sûr qu'elle est nulle part ailleurs dans la page. :wink:

Publié : 17 juin 2004, 10:57
par Benoit
Oui, tu peux, mais je pense qu'utiliser quelque chose comme insertRule sur ta feuille de style sera plus rapide. Il te suffit d'ajouter une règle sur span.contenu etc.

Attention, sous IE c'est addRule au lieu d'insertRule : http://www.quirksmode.org/dom/w3c_css.html

Autre possibilité : utiliser le tableau cssRules[] et addProperty (ne fonctionne pas dans IE)

Publié : 17 juin 2004, 11:18
par DJiK
Benoit a écrit :utiliser quelque chose comme insertRule sur ta feuille de style sera plus rapide. Il te suffit d'ajouter une règle sur span.contenu etc.
Oui ça a l'air bien, mais tu me parles chinois Benoit là! :lol:

Y'aura pas plus d'une dizaine d'éléments. La boucle for est pas trop lourde, je pense.

Publié : 17 juin 2004, 12:23
par Benoit
Je voulais dire qu'au lieu de changer les éléments un par un tu pouvais changer la règle qui s'applique à tous les éléments de cette classe.

Mais si tu comprends mieux la boucle, garde la boucle :)

Publié : 17 juin 2004, 14:11
par DJiK
J'ai compris le principe, mais en Javascript je sais faire que du copier-coller!


J'ai tenté ça:

Code : Tout sélectionner

 document.styleSheets[0].insertRule(
   'var {display: none;}', 
   document.styleSheets[0].cssRules.length); 
Mais il ne se passe rien... :(
Pas grave, je peux garder la boucle!