Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/07/2011, 00h27   #1
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2008
Messages : 104
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 104
Points : 36
Points : 36
Par défaut champ ajouté par innerHTML undefined sous firefox

Bonjour,
j'ai un petit problème sur un formulaire dynamique qui se pose sous firefox et non sous internet explorer.
Je vous passe les détails mais j'ai une liste déroulante que je crée dynamiquement suivant le choix dans une autre liste :
Code :
1
2
3
4
5
6
 
<select id="forme" name="forme" onChange='remplir(this.form)' >
					<option value="-">-- Shape of the pool --</option>
					<option value="rectangulaire">Rectangular</option>
					<option value="special" >Special shape</option>
				</select>
voilà la liste qui permet de créer l'autre et voilà un bout de la fonction appelée qui le fait :
Code :
1
2
3
4
5
 
function remplir(form)
{
document.getElementById("cryptage2").innerHTML ='<select id="sorte" name="sorte" onChange="remplirSpecial(form);" ><option value="-">-- Sort of special shape --</option></select>';
}
cette instruction se fait suivant certains tests mais peu importe.
Je veux ensuite appeler la fonction remplirSpecial à la sélecction d'une option dans cette liste et il apparait que la liste déroulante n'existe pas(sous firefox).
dans la fonction ou dans une autre n'importe où une fois la liste déroulante créee, en faisant un simple
Code :
i = form.sorte.selectedIndex;
j'ai l'erreur forme.sorte undefined.

merci de votre aide
frboyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 01h28   #2
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2008
Messages : 104
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 104
Points : 36
Points : 36
J'ai remarqué qu'avec document.getElementById('sorte') existe et je peux le manipuler mais il n'apparait pas dans le formulaire alors que ma div est bien dedans.

Donc le problème perdure puisque les champs créés dynamiquement comme ci dessus ne sont pas dans le formulaire pour firefox. sous IE aucun problème je récupère ensuite mes $_POST et tous les index sont définis
frboyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 02h03   #3
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
As-tu pensé à inspecter le DOM pour voir ton élément "sorte" et ses propriétés ?

Ca peut lever des doutes. ^^

(Quoi qu'il en soit, ce n'est pas pour dire du mal d'innerHTML mais bon... je remarque qu'avec les méthodes DOM de création/manipulation des éléments on est quand même moins emm**** )
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 08h05   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Code :
onChange="remplirSpecial(form);"
Citation:
j'ai l'erreur forme.sorte undefined
Normal, la variable form passée en paramètre de l'appel de la fonction est effectivement inconnue...
Réfère toi à la ligne que tu as écrite juste avant :
Code :
onChange='remplir(this.form)'
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 10h14   #5
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
bonjour,

2 choses :
- la première évite innerHTML pour insérer des nouveaux éléments dans ta page utilise plutôt le DOM :
voilà un exemple http://javascript.developpez.com/tut...=page_5#LV-B-2

- la seconde est qu'il est conseillé d'écrire dans le code HTML les événements en minuscules (onchange plutôt que onChange)
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 23h50   #6
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2008
Messages : 104
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2008
Messages : 104
Points : 36
Points : 36
Merci pour vos réponses.
J'ai simplement fait une belle anerie en fermant la balise form avant une div,une mauvaise imbrication en gros.

Mais je vais prendre vos conseils en considération et refaire tout ça sans le innerHTML.
frboyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h03.


 
 
 
 
Partenaires

Hébergement Web