RemoveChild et formulaire dynamique php [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009
-
Messages postés
7
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009
-
Bonjour,
essayant de faire un formulaire PHP dynamique, je suis confronté à un problème que je ne peux résoudre avec mes faibles connaissances...
Ce code qui permet d'ajouter une série de boutons radio fonctionne.
Cependant, si j'ajoute la première partie permettant de supprimer ce que contient le conteneur (un div avec id), et en particulier la ligne: partie0.removeChild(contenu0);, le reste ne s'affiche alors plus...
Quelqu'un voit-il où est l'erreur? Merci!!
Renan

Voici le code:
function ouvre1() {
//Effacement du champ
var partie0 = document.getElementById("contenu1");
var contenu0 = partie0.firstChild;

                partie0.removeChild(contenu0);

//creation des variables	
var l01 = document.createElement('table');
l01.setAttribute("width","100%");
var l02 = document.createElement('tr');
l02.setAttribute("valign","top");
var l03 = document.createElement('td');
l03.setAttribute("width","100");
var t04 = document.createTextNode("Vivez-vous avec:");
var l05 = document.createElement('td');
var l06 = document.createElement('table');
var l07 = document.createElement('tr');
var l08 = document.createElement('td');
var l09 = document.createElement('label');
var l10 = document.createElement('input');
l10.setAttribute("type","radio");
l10.setAttribute("name","enf19");
l10.setAttribute("value","1");
l10.setAttribute("id","enf19_0");
var t11 = document.createTextNode(" tous vos enfants");

//mise en forme
l09.appendChild(t11);
l09.insertBefore(l10,t11);
l08.appendChild(l09);
l07.appendChild(l08);
l06.appendChild(l07);
l05.appendChild(l06);
l03.appendChild(t04);
l02.appendChild(l05);
l02.insertBefore(l03,l05);
l01.appendChild(l02);
partie0.appendChild(l01);
   }

4 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
Bonjour,

__ l03.setAttribute("width","100");
"100px" "100%" ou ... mais pas "100" tout court

__ eviter les setAttribute
pour moi, ça alourdit
mais surtout, ça ne fonctionne pas de la
même manière avec tous les navigateurs
à l03.setAttribute("width","100");
je prèfère l03.width= "100px";

__ <table><tr><td>... ben non :
c'est <table> <tbody> <tr><td>...

__ un <table> dans un <table> dans un

vous ne vous compliquez pas un peu la vie ?

__ removeChild
donc le div contient au moins un élément,
sinon, ça ne va pas plaire

__ après, il faudrait contrôler
que les appendChild sont bien faits
dans le bon ordre, mais franchement avec les
noms que vous donnez aux variables, ce n'est
pas simple...

ch'tiot exemple ( simplifié, 1 seul table, 1 seul
bouton radio... vous adapterez et compléterez )



<script type ="text/javascript">
function ouvre1() 
{	var elm_div=document.getElementById("contenu1");

if ( elm_div.firstChild )
{	elm_div.removeChild(elm_div.firstChild);	}

var elm_table=document.createElement('table');
elm_table.width="100%";
var elm_tbody = document.createElement('tbody');
var elm_tr = document.createElement('tr');
elm_tr.valign="top";
var elm_td = document.createElement('td');
elm_td.width="100%";
var elm_radio = document.createElement('input');
elm_radio.type="radio";
elm_radio.name="enf19";
elm_radio.value="1";
elm_radio.id="enf19_0";

elm_td.appendChild(elm_radio);
elm_tr.appendChild(elm_td);
elm_tbody.appendChild(elm_tr);
elm_table.appendChild(elm_tbody);

elm_div.appendChild(elm_table);
  }
  
 ouvre1();
</script>



Cordialement [mon Site] [M'écrire] Bul
Messages postés
1764
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
10 juillet 2020
83
bonjour
en generale pour supprimer une node on fait d'abort reference a la node a supprimer et on se positionne par rapport au node parent
document.getElementById('lanodeasupprimer').parentNode

puis on supprime la node

.removeChild(document.getElementById('lanodeasupprimer'));

la ligne complete

document.getElementById('lanodeasupprimer').parentNode.removeChild(document.getElementById('lanodeasupprimer'));

par contre si ton div contient plusieurs elements il seront supprimé en meme temp que le div
Messages postés
7
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009

Merci!
Mais si je veux garder le div pour pouvoir le remplir juste après????
Messages postés
7
Date d'inscription
mercredi 9 janvier 2008
Statut
Membre
Dernière intervention
15 septembre 2009

Merci beaucoup pour ce cours-correction!
Tout marche à merveille!
... et je ne connaissais pas l'usage des tbody...!!!
Merci encore!
Renan