11548 sujets

JavaScript, DOM et API Web HTML5

Salut à toute la communauté,

Je vous expose mon problème.

Je réalise un formulaire avec des champs dynamique. Le problème est que ma variable nom_champs qui est pourtant correcte j'ai vérifié en debug est interprétée comme un string dans la fonction getElementById(nom_champs) alors que je souhaite que se soit la valeur de la variable comme paramètre et non son nom.

$output .='
for(i=0; i<nb; i++)
{		
  var nom_champs = tab2[ i];
  var test = document.getElementById(nom_champs).value;
  document.write("La valeur de a est ",nom_champs);
}';


Je vous remercie par avance.


Firebug me renvoie cette erreur :

document.getElementById(nom_champs) is null
[Stopper sur une erreur] var test = document.getElementById(nom_champs).value;


David
Modifié par fvsch (17 Mar 2011 - 13:29)
Tu assignes nom_champs à la valeur de la variable tab2.
À quoi est assignée cette variable (ce n'est pas dans ton code)?
nom_champs = tab2[ i];

il semble que le forum ne prend pas les crochets je vais les remplacer par des parenthèses :

nom_champs = tab2(i);

j'affecte à la variable nom_champs la valeur du tableau tab2 à l'indice i.
Le problème ne vient pas de la variable, je l'ai vérifié à un eval et elle change bien de valeur comme je le souhaite à chaque passage.

En faite la variable nom_champs n'est pas interprété comme une variable dans document.document.getElementById().

Je pense que sa vient du fait que je me trouve côtés php avec des ' '.
Modifié par fvsch (17 Mar 2011 - 13:30)
autre exemple si je rajoute :

tab(i) = document.getElementById("+nom_champs+").value;
les () sont des crochets

firefox interprète mal et ne concatène même pas il me retourne juste :

document.getElementById("+nom_champs+") is null
[Stopper sur une erreur] tab = document.getElementById("+nom_champs+").value;
Un document.getElementById() appelle une chaîne de caractères en argument.

Peut-être qu'un alert(typeof(tab[j])); pourrait permettre de vérifier si cette condition est réalisée ? Sinon un tab[j].toString() ferait sans doute l'affaire...

NB : Le forum prend les crochets mais pas autour de l'indice i (qu'il interprète comme une mise en italique !)
J'ai fais le typeof c'est bien du String retourné par le tableau. De même le toString() ne fonctionne pas sous FF j'ai toujours comme message que l'id is nul et il me sors le code sans la valeur du tab.

Merci
Même question que Florent, qu'est-ce que tab2(i) ?
Si je comprend ton morceau de code (qui est bien insuffisant) tu génères une source JS avec du PHP ... si c'est le cas es-tu sûr que tu n'as pas besoin de passer par une concaténation (tab2 dans ton script JS ou PHP) pour faire ce que tu souhaites ?

En l'état, aucune possibilité de t'aider plus.

<Edit>
Correction de ma part, si on t'indique que document.getElementById(nom_champs) is null cela ne veut pas dire que nom_champs est nul mais que l'élément n'existe tout simplement pas dans ton code généré.
Modifié par yodaswii (17 Mar 2011 - 10:28)
Bonjour,

Tout à fait d'accord avec yodaswii ! Et j'ajouterais qu'une value doit avoir été attribuée à l'élément "nom_champs" AVANT de la demander.
Je vous remercie.

Mon problème est réglé, cela venait de mes ID qui n'étaient pas nommés pareil.
Tout est fonctionnel.


Autre petite question toujours dans la génération d'un formulaire dynamique, peut-on créer des variables POST dynamiques cotés php ?

Car j'ai géré l'envoi de mon formulaire en POST avec la méthode serialize() de Jquery ce qui est parfait pour tout envoyer.

Merci