A une valeur Null ou n'est pas un objet [Résolu]

Signaler
Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008
-
EbnouLjabal77
Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008
-
Bonjour,

J'ai besoin de vos consiels.

je débute en javascript. Je tente de faire marcher ce code :

var cpt_btn=0;
do{
btn1[cpt_btn]=document.createElement("img");
btn1[cpt_btn].src=btn[cpt_btn].src_out;
btn1[cpt_btn].className=btn[cpt_btn].class_name;
btn1[cpt_btn].alt=btn[cpt_btn].alt;
btn1[cpt_btn].onmouseover=function (){btn1[cpt_btn].src=btn[cpt_btn].src_over;}
btn1[cpt_btn].onmouseout=function (){btn1[cpt_btn].src=btn[cpt_btn].src_out;}
btn1[cpt_btn].onclick=function (){document.location=(btn[cpt_btn].cible);}
menu.appendChild(btn1[cpt_btn]);
cpt_btn++;
}while (cpt_btn<btn.length)

Les lignes en gras ne marchent ni dans FireFox ni dans IE. Dans IE
je recois le message btn1[...] a lavaleur Null ou n'est pas un objet.

Par contre quand je le fait sans la boucle ça marche cad:

btn1[0]=document.createElement("img");

btn1[0].src=btn[0].src_out;

btn1[0].className=btn[0].class_name;

btn1[0].alt=btn[0].alt;

btn1[0].onmouseover=function (){btn1[0].src=btn[0].src_over;}

btn1[0].onmouseout=function (){btn1[0].src=btn[0].src_out;}

btn1[0].onclick=function (){document.location=(btn[0].cible);}

menu.appendChild(btn1[0]);

btn1[1]=document.createElement("img");

btn1[1].src=btn[1].src_out;

btn1[1].className=btn[1].class_name;

btn1[1].alt=btn[1].alt;

btn1[1].onmouseover=function (){btn1[1].src=btn[1].src_over;}

btn1[1].onmouseout=function (){btn1[1].src=btn[1].src_out;}

btn1[1].onclick=function (){document.location=(btn[1].cible);}

menu.appendChild(btn1[1]);

btn1[2]=document.createElement("img");

btn1[2].src=btn[2].src_out;

btn1[2].className=btn[2].class_name;

btn1[2].alt=btn[2].alt;

btn1[2].onmouseover=function (){btn1[2].src=btn[2].src_over;}

btn1[2].onmouseout=function (){btn1[2].src=btn[2].src_out;}

btn1[2].onclick=function (){document.location=(btn[2].cible);}

menu.appendChild(btn1[2]);

.......

.......

Je sais que le problème viens du passage du compteur cpt_btn aux fonctions anonymes.
Mais je ne sais pas comment faire pour que ça marche.
Je vous remercie d'avance.

2 réponses

Messages postés
2
Date d'inscription
dimanche 17 décembre 2000
Statut
Membre
Dernière intervention
30 juillet 2008

bonjour,
merci pour la réponse.
bon, le souci est maintenant résoulu
ça venait du passage des argument au fonctions anonymes.
Messages postés
1743
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
16 janvier 2020
52
jour
c'est ta boucle qui ne vas pas si je ne me trompe pas tu doit procede de cette facon

var cpt_btn=0;
while (cpt_btn<=btn.length){
btn1[cpt_btn]=document.createElement("img");
btn1[cpt_btn].src=btn[cpt_btn].src_out;
btn1[cpt_btn].className=btn[cpt_btn].class_name;
btn1[cpt_btn].alt=btn[cpt_btn].alt;
btn1[cpt_btn].onmouseover=function (){btn1[cpt_btn].src=btn[cpt_btn].src_over;}
btn1[cpt_btn].onmouseout=function (){btn1[cpt_btn].src=btn[cpt_btn].src_out;}
btn1[cpt_btn].onclick=function (){document.location=(btn[cpt_btn].cible);}
menu.appendChild(btn1[cpt_btn]);
cpt_btn++;
}