Javascript, getElementById() imbriqués

Fermé
samyghan Messages postés 73 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 28 janvier 2009 - 28 janv. 2009 à 11:00
samyghan Messages postés 73 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 28 janvier 2009 - 28 janv. 2009 à 12:49
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

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 mardi 10 juin 2008 Statut Membre Dernière intervention 28 janvier 2009 15
28 janv. 2009 à 11:34
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 janv. 2009 à 11:43
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 mardi 10 juin 2008 Statut Membre Dernière intervention 28 janvier 2009 15
28 janv. 2009 à 12:18
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 mardi 10 juin 2008 Statut Membre Dernière intervention 28 janvier 2009 15
28 janv. 2009 à 12:49
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