Aller au contenu

Sujets conseillés

Posté

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.

:)

Posté

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

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

Posté

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 :)

Posté

Bonjour,

Sous Firefox, dans le menu outils, tu as la console d'erreurs qui affiche toutes les erreurs, notamment javascript.

Posté (modifié)

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
Posté

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';
}
}

Posté (modifié)

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
Posté

Ca m'affiche [objet htmliframeelement] pour les premiers puis après null (comme il n'y a rien) mais ca ne m'affiche rien pour l'id 9.

:)

Veuillez vous connecter pour commenter

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



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