getelementbyid dans une boucle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : getelementbyid dans une boucle

par Ryle » 31 mars 2008, 16:54

Pour tester l'existence d'un champ, on peut également l'appeller directement, celui-ci retournant une valeur null/undefined/false s'il n'existe pas et [object]/true s'il existe bien :
for (var i=0; i < n; i++) { 
    if (document.getElementById(tabLiens[i])) 
        document.getElementById(tabLiens[i]).style.display = "none"; 
}

par Cyrano » 31 mars 2008, 11:32

Tss tss... un peu de logique : c'est l'objet qui n'est pas trouvé, pas sa propriété style. Donc vérifie si l'objet est bien défini et au passage, on ne mesure pas la longueur d'un tableau à chaque tour de boucle, on le mesure avant et on utilise une variable à la place :
var n = tabLiens.length;
for (var i=0; i < n; i++)
{
    if (undefined !==  document.getElementById(tabLiens[i]))
    {
        document.getElementById(tabLiens[i]).style.display = "none";
    }
}

par Berzemus » 31 mars 2008, 09:31

a moins que je sois complètement à coté de la plaque, je n'en vois pas de particulier..

Essaye de vérifier l'existence de l'attribut avant de le modifier:

Code : Tout sélectionner

for (var i=0; i < tabLiens.length; i++) { if ( document.getElementById(tabLiens[i]).style.display)) document.getElementById(tabLiens[i]).style.display = "none"; }
(si ça cause toujours des soucis, essaye d'enlever le display dans le if.

par Invité » 30 mars 2008, 20:56

ben justement, un alert m'affiche bien les éléments du array.
Je pensais que c'était un pb de syntaxe...

par Berzemus » 30 mars 2008, 20:47

Oui. L'élément sélectionné n'a pas d'attributs. Fait un alert sur tabLiens pour savoir lequel cause du souci.. d'un autre côté, si l'élément n'a pas, auparavant, l'attribut style défini, ça pourrait causer ce genre de souci aussi..

getelementbyid dans une boucle

par Invité » 30 mars 2008, 20:40

Bonjour à tous,

j'essaye d'appliquer un traitement en boucle avec getElementById, comme ceci:
  tabLiens = new Array('champ1', 'champ2', 'champ3', 'champ4');  //id d'éléments html
  for (i=0; i < tabLiens.length; i++)
  {     
       document.getElementById(tabLiens[i]).style.display = "none";
  }
Le but est de masquer tous les éléments html dont l'id se trouve dans mon array tabLiens.
L'erreur que je reçois:
document.getElementById(tabLiens) has no properties


Voyez-vous ce qui ne va pas?