Bonjour je ne connais pas beaucoup de choses en javascript.
J'ai un formulaire et à un moment j'ai un petit + qui déroule des champs input texte supplémentaires.
J'ai commencé à faire ça avec innerHtml mais j'ai vu que ça ne marchait pas sur firefox (que sur IE) et on m'a dit :"innerHtml c'est mal!!".
Comme je suis quelqu'un de pas contrariante, j'ai voulu essayer avec le DOM que je découvre.
Résultat : rien sous IE, ça marche sous Firefox. MAIS, dans la console d'erreur de Firefox ça me dit : "ajoutForm is not defined". Ce qui expliquerait que ça ne marche pas sous IE. Firefox a une erreur mais exécute quand même le script.
Pour commencer je n'ai créé avec le DOM que la première zone input pour voir si j'arrivais déjà à faire ça. J'ai suivi la méthode d'1 des FAQ de ce site que je trouvais bien expliquée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
function ajoutZones()
{
	// recherche du noeud parent
	var divParent = document.getElementById('ajoutForm');   
 
	// création des nouveaux noeuds
	var nveauField = document.createElement('fieldset');
	var nveauLegend1 = document.createElement('legend');
	var nveauParagraphe1 = document.createElement("p");
	var nveauLabel1 = document.createElement("label");
	var nveauInput1 = document.createElement("input");
 
	// paramétrage des nouveaux noeuds
	nveauLegend1.appendChild(document.createTextNode("INFOS :"));
	nveauLabel1.appendChild(document.createTextNode("Nom ou pseudo :"));
	nveauParagraphe1.appendChild(nveauLabel1);
	nveauLabel1.for = 'nomArtiste';
	nveauParagraphe1.appendChild(nveauInput1);
	nveauInput1.type = 'text';
	nveauInput1.name = 'nomArtiste';
	nveauInput1.id = 'nomArtiste';
 
	// raccord des noeuds
	nveauField.appendChild(nveauLegend1);
	nveauField.appendChild(nveauParagraphe1);
	divParent.appendChild(nveauField);
 
}
Je vous mets la partie de ma page où doit s'insérer la partie du formulaire créée avec le DOM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<form method="post" action="controleurProgramme.php">
	<?php
                include 'listeArtistes.php';
        ?>
		<p><input type="radio" name="porteur" value="oui" id="oui"/><label for="oui">Artiste porteur :</label></p>
	</fieldset>
	<p><input type="hidden" name="idProg" value="<?php echo $id ?>"/></p>
	<p>
		<label>Autre artiste :</label> 
		<input type="button" name="ajout" value="+" onclick="ajoutZones()" />
	</p>
	<div id="ajoutForm">
	</div>
 
	<p>
		<input type="submit" name="valider" value="Valider"/><input type="reset" value="Réinitialiser"/>
	</p>
</form>
Il y a donc ce div ajoutForm que j'ai créé vide pour que le nouvel input s'insère là. En fait je me dis que l'erreur vient peut-être de là mais je n'arrive pas à trouver pourquoi il me dit que ajoutForm (nom de mon id) n'est pas défini.
PS : Info supplémentaire : message d'IE : identificateur attendu