Javascript, getElementById() imbriqués

samyghan Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
samyghan Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour CCM,

J'ai une question en Javascript : peux-on imbriquer les getElementById() ?

Car mon script ne marche pas :

var cHTML = document.getElementById("form1").innerHTML;
var valeurChamp = cHTML.getElementById("champ").value;
alert(valeurChamp);

Ca plante et ça n'affiche pas "bonjour", pourtant quand j'affiche cHTML j'ai bien :
<div id="form1"><input type="text" id="champ" value="bonjour" size="40"></div>

Voilà, si quelqun a une idée :) ! Merci

2 réponses

ddez
 
Salut

Ca marcherait avec ca :
var cHTML = document.getElementById("form1")

Mais le innerHTML te renvoie une chaine de caractère. Tu ne peux donc plus utiliser les objets décris dedans
0
samyghan Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   15
 
Non ça ne marche toujours pas, je comprend pas.

C'est vraiment la ligne
var valeurChamp = cHTML.getElementById("champ").value;
qui plante, et même si cHTML est en innerHTML ou pas...
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Bonjour,

var cHTML = document.getElementById("form1").innerHTML;
var valeurChamp = cHTML.getElementById("champ").value;
alert(valeurChamp);


comme cela tu n'applique pas le bon principe

tu mélanges l'accès à un objet par le nom et l'accès par l'id

par le nom il faut effectivement fait document.form.champ.value

par l'id on l'atteint directement

pour atteindre un champ du formulaire

<input type="text" name="champ1" id="champ1" value="">

tu fais

var obj= document.getElementById("champ1");

var valeurChamp=obj.value;

// ou directement:
var valeurChamp=document.getElementById("champ1").value;



et de plus inner.HTML permet d'écrire dans l'objet et pas de le selctionner comme tu l'as fait

attention pour ecrire dans un div on utilise inner.HTML

pour ecrire dans un input on utilises .value

ex:

pour lire: var valeurChamp=document.getElementById("champ1").value;

pour ecrire:

document.getElementById("champ1").value="Bonjour";
0
samyghan Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   15
 
Merci je comprends mieux comment faire maintenant.

J'ai une dernière question pour appliquer cette méthode a mon problème :

Est-il possible de mettre une variable dans "document.form.champ.value" ?

En fait j'ai plusieurs formulaires générés dynamiquement qui ont les mêmes champs, comment faire pour qu'une fonction puisse accéder au même champs des différents formulaire avec une seule variable d'entrée ?

Evidemment :

check(formid) {
return document.form+formid+.champ.value
}

ne fonctionne pas !
0
samyghan Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   15
 
C'est bon j'ai trouvé, merci a toi Alain.

C'est pas bien j'ai fais un multipost sur un autre forum !

La solution est ici : https://openclassrooms.com/forum/sujet/getelementbyid-imbriques-27935 :)
0