Question concernant l' ID

Question concernant l' ID - HTML/CSS - Programmation

Marsh Posté le 03-04-2006 à 23:02:18    

BOnjour, je voudrais savoir s'il etait possible d'avoir plusieurs elements avec le meme id
et si c'est possible, lorsque que je fait :

Code :
  1. objs=document.getElementById("p" );


 
comment faire une action sur tous les objs?
 
J'ai essayé cela mais ca ne marche pas:
 

Code :
  1. alert(objs.length);


je recois 'undefined'!


Message édité par juventino1802 le 03-04-2006 à 23:16:15
Reply

Marsh Posté le 03-04-2006 à 23:02:18   

Reply

Marsh Posté le 03-04-2006 à 23:20:10    

getElementById ne peut retourner qu'un (1, one, eins) élément... L'id doit être effectivement unique, c'est une règle de l'HTML.
 
Pour chopper plusieurs <p>, tu peux par contre utiliser leur class, genre :

<p class="pouet">sdfsdfsdf</p>
<p>xcvxcv</p>
<p class="pouet">sdfsdfsdfsdfsdf</p>
<p>xcvxc</p>


Puis pour récupérer tous les p de classe pouet, une petite fonction du style :

function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if(node == null) {
    node = document;
  }
  if(tag == null) {
    tag = '*';
  }
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)" );
  for (var i = 0, j = 0; i < elsLen; i++) {
    if(pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


 
Et hop :

var pList = getElementsByClass('pouet');

Reply

Marsh Posté le 03-04-2006 à 23:23:18    

Merci, c'est un peu trop compliqué pour ma toi ta fonction mais on va faire avec.

Reply

Marsh Posté le 03-04-2006 à 23:25:03    

J'te rassure, elle est pas de moi ;) Mais globalement elle récupère toutes les éléments du document. Puis une petite expression régulière pour voir si l'attribut class contient la class que tu veux (vu que tu peux faire un truc du style :

<p class="pouet truc"></p>


donc le p a deux class : pouet et truc)

Reply

Marsh Posté le 04-04-2006 à 14:35:17    

Merci ca marche mieux tout d'un coup.
Sinon tu pourrai me dire pourquoi lorque je fait

Code :
  1. objs=document.form.elements['radio']


Je recois toujours undefined quand quand il n'y a qu'un bouton radio, mais quand il y en a plusieurs ca marche bien.


Message édité par juventino1802 le 04-04-2006 à 14:35:31
Reply

Marsh Posté le 04-04-2006 à 14:45:21    

FlorentG a écrit :

getElementById ne peut retourner qu'un (1, one, eins) élément... L'id doit être effectivement unique, c'est une règle de l'HTML.


ça c'était bon

FlorentG a écrit :

Pour chopper plusieurs <p>, tu peux par contre utiliser leur class, genre :

<p class="pouet">sdfsdfsdf</p>
<p>xcvxcv</p>
<p class="pouet">sdfsdfsdfsdfsdf</p>
<p>xcvxc</p>


Puis pour récupérer tous les p de classe pouet, une petite fonction du style :

... une grosse bouse ...



 
Donc pour récupérer tous les elements <p> de ton document tu as la fonction getElementsByTagName qui te retourne un DOMNodeList ( c'est à dire un tableau de noeud). Un truc dans le genre:

Code :
  1. var paragraphes = document.getElementsByTagName('p');
  2. for (var i=0; i<paragraphes.length; i++){
  3. alert(paragraphes[i].innerHTML);
  4. }


 
edit: manquait une code autour du p dans le code

Message cité 1 fois
Message édité par anapajari le 04-04-2006 à 14:51:32
Reply

Marsh Posté le 04-04-2006 à 14:48:41    

c'est quoi un tagname?

Reply

Marsh Posté le 04-04-2006 à 14:54:25    

juventino1802 a écrit :

c'est quoi un tagname?


 :sweat:  [:mlc]  :sweat:  
euuuuh bin Tag et Name collé ça donne tagName... Donc getElementsByTagName = get Elements By Tag Name = attrape les elements par leur nom de balise...

Reply

Marsh Posté le 04-04-2006 à 14:55:31    

C'est pour trouvé les éléments par balise ;)
 
balise = tag...
 
anapajari te le dis en plus

Reply

Marsh Posté le 04-04-2006 à 15:08:24    

Erreur : getElementsByTagName is not defined
Fichier source : http://127.0.0.1/Microcosmo2/scripts/checkbox.js
Ligne : objs=getElementsByTagName('p');  
Euh..

Reply

Marsh Posté le 04-04-2006 à 15:08:24   

Reply

Marsh Posté le 04-04-2006 à 15:11:12    

document.getElementsByTagName

Reply

Marsh Posté le 04-04-2006 à 15:17:32    

OK merci.

Reply

Marsh Posté le 04-04-2006 à 15:20:49    

Derniere question, enfin j'espere:
comment obtenir le 'class' d'un objet en javascript. il me semble que c'est un mot particulier.


Message édité par juventino1802 le 04-04-2006 à 15:22:05
Reply

Marsh Posté le 04-04-2006 à 15:25:26    

className

Reply

Marsh Posté le 04-04-2006 à 15:31:06    

Merci, un grandmerci a tous.

Reply

Marsh Posté le 04-04-2006 à 22:19:00    

FlorentG a écrit :

J'te rassure, elle est pas de moi ;) Mais globalement elle récupère toutes les éléments du document. Puis une petite expression régulière pour voir si l'attribut class contient la class que tu veux (vu que tu peux faire un truc du style :

<p class="pouet truc"></p>


donc le p a deux class : pouet et truc)


 
un className.toLowerCase().indexOf(ClassString)!=-1, c'est pas plus simple [:petrus dei]

Message cité 1 fois
Message édité par gatsu35 le 04-04-2006 à 22:19:40
Reply

Marsh Posté le 06-04-2006 à 10:45:16    

gatsu35 a écrit :

un className.toLowerCase().indexOf(ClassString)!=-1, c'est pas plus simple [:petrus dei]


Non benêt, sinon ça va matcher sur :

<p class="apoueta">


alors que ça devrait pas ;);)

Reply

Marsh Posté le 06-04-2006 à 10:55:39    

FlorentG a écrit :

Non benêt, sinon ça va matcher sur :

<p class="apoueta">


alors que ça devrait pas ;);)


Exact, bébé masklinn me l'a expliqué hier d'où une technique à la con que je ne sais plus où je l'ai mis


Message édité par gatsu35 le 06-04-2006 à 10:55:51
Reply

Marsh Posté le 06-04-2006 à 11:09:01    

La technique, c'est ce que j'ai posté avant

Reply

Sujets relatifs:

Leave a Replay

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