Aller au contenu

Problème boucle for


snwoman49

Sujets conseillés

Bonsoir à tous,

Je rencontre encore un problème javascript et celui est complètement illogique.

Voici mon script :

<script language="javascript">
function montrer_frame(value,id_li) {


for (var i=0 ; i<=15 ;i++){

if(i == value)
{
document.getElementById(i).style.display='block';
document.getElementById(id_li).className='active';
}
else{
document.getElementById(i).style.display='none';
document.getElementById(i+"10").className='desactive';
}

}


}
</script>

Le problème c'est que mon i s'arrête à 3 (j'ai fais une vérification avec alert(i); ).

Pourtant ma boucle n'est pas programmée pour ça, c'est assez bizarre ce problème.

Si vous pouviez m'aider, merci d'avance.

:)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Tous les blocs identifiés que tu appelles avec getElementById(i) existent réellement ??

Non ils n'existent pas tous.

Ca donne quoi au niveau du debugage javascript ? Tu n'as pas d'erreurs ??

Que faut il utiliser pour debugger le js ?

Bonne journée et merci de ta réponse :)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci NorSeb, j'ai comme erreur document.getElementById(i) has no properties donc bien un problème de déclaration.

J'avais fait ça comme code pour tester s'il existe ou non.



<script language="javascript">
function montrer_frame(value,id_li) {


for (var i=0 ; i<=15 ;i++){

var actual=document.getElementById(i).style.display;

if(actual == 'block' || actual == 'none')
{

if(i == value)
{
document.getElementById(i).style.display='block';
document.getElementById(id_li).className='active';
}
else{
document.getElementById(i).style.display='none';
document.getElementById(i+"10").className='desactive';
}

}



}




}



</script>

Mais ca ne marche pas non plus.

:)

Modifié par snwoman49
Lien vers le commentaire
Partager sur d’autres sites

Je ne suis pas un pro dans le domaine, mais je pense qu'il faut que tu teste si document.getElementById(i) existe avant de valoriser "style.display" et "className"

Essaye en remplacant :

else{
document.getElementById(i).style.display='none';
document.getElementById(i+"10").className='desactive';
}

par

else{
if (document.getElementById(i) != null) {
document.getElementById(i).style.display='none';
document.getElementById(i+"10").className='desactive';
}
}

Lien vers le commentaire
Partager sur d’autres sites

Moi non plus je suis loin d'être un pro en js, je l'utilise car là je suis obliger.

J'ai testé ton script et un nouveau problème apparait.

J'ai deux id, 9 et 10, le 9 s'affiche mais pas le 10 et si je modifie l'id des frames en les inversant le 9 s'affiche toujours mais pas le 10.

En fet le i s'arrête à 8 (9 si on compte le 0) (testé avec alert(i))

:)

Modifié par snwoman49
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...