erreur sur array

Invité
Invité n'ayant pas de compte PHPfrance

25 mars 2008, 10:57

Bonjour à tous,

j'ai le tableau js suivant contenant les noms de champs texte d'un formulaire:
nm_chps = new Array(f.cb_secteuracti, f.cb_employ, f.cb_poste, f.cb_adremployeur);
J'essaye de boucler sur ce tableau pour attribuer une valeur par défaut aux champs texte
for (i in nm_chps)
{
   nm_chps[i].value = "non applicable";
}
Je reçois l'erreur
nm_chps has no properties


Voyez vous ce que j'ai oublié?
Merci pour vos réponses.

Invité
Invité n'ayant pas de compte PHPfrance

25 mars 2008, 11:04

un oubli dans le post au début du code:
var f = document.adminForm;
où "adminForm" est l'id et le nom de mon formulaire.
J'ai bien ça dans mon code mais ça ne change pas l'erreur.

ViPHP
ViPHP | 3607 Messages

25 mars 2008, 11:24

Il faut essayer de debugger en affichant les variables intermédiaires.
Que donnent
alert(f);
alert(nm_chps);
et
alert(nm_chps[i]); //dans la boucle

Eléphant du PHP | 445 Messages

25 mars 2008, 15:23

for (i in nm_chps)
{
   nm_chps[i] = "non applicable";
} 
nm_chps est une chaine de caractères donc elle n'a pas de propriété de type value.
Tu y accèdes directement.

Mammouth du PHP | 19672 Messages

25 mars 2008, 15:32

Non non les copains, c'est plus subtil que ça et notre ami n'avait au départ posté qu'une partie de son code.
var f = document.adminForm;
nm_chps = new Array(f.cb_secteuracti, f.cb_employ, f.cb_poste, f.cb_adremployeur);
ça, je suppose que ce sont non des chaines mais des objets dans un formulaire, je me trompe ??

Si c'est bien ça, il faudrait commencer par vérifier que ta balise form a bien un attribut id avec le nom utilisé et même chose pour les champs traités, puis l'écrire de façon un poil plus stricte et ça marchera à tous les coups :
var f = document.forms.adminForm;
var nm_chps = [f.elements.cb_secteuracti, f.elements.cb_employ, f.elements.cb_poste, f.elements.cb_adremployeur];
Note au passage l'utilisation de [] au lieu de new Array().

Et là, l'appel de nm_chps.value a des chances de fonctionner :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: