Aide Javascript: plein d'éléments?

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Aide Javascript: plein d'éléments?

Message 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(*)? :?
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message 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()
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Message 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. :)
Dernière modification par DJiK le 17 juin 2004, 11:04, modifié 1 fois.
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Message 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:
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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)
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Message 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.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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 :)
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Message 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!
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités