snwoman49 Posté 1 Janvier 2007 Posté 1 Janvier 2007 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.
petit-ourson Posté 2 Janvier 2007 Posté 2 Janvier 2007 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 ??
snwoman49 Posté 2 Janvier 2007 Auteur Posté 2 Janvier 2007 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
NorSeb Posté 2 Janvier 2007 Posté 2 Janvier 2007 Bonjour, Sous Firefox, dans le menu outils, tu as la console d'erreurs qui affiche toutes les erreurs, notamment javascript.
snwoman49 Posté 2 Janvier 2007 Auteur Posté 2 Janvier 2007 (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é 2 Janvier 2007 par snwoman49
NorSeb Posté 2 Janvier 2007 Posté 2 Janvier 2007 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'; }}
snwoman49 Posté 2 Janvier 2007 Auteur Posté 2 Janvier 2007 (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é 2 Janvier 2007 par snwoman49
NorSeb Posté 2 Janvier 2007 Posté 2 Janvier 2007 que t'affiche un alert(document.getElementById(i)) ?
snwoman49 Posté 2 Janvier 2007 Auteur Posté 2 Janvier 2007 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant