Les Allergies
Alimentaires
Posez votre question Signaler

InnerHTML dans une balise table

pazz - Dernière réponse le 16 mars 2012 à 13:35
Bonjour,
Je n'arrive pas a faire un innerHTML dans une balise Table, auriez-vous déjà rencontré ce problème ??
pazz
Lire la suite 

InnerHTML dans une balise table »

12 réponses
Réponse
+1
moins plus
je ferais ça plutot avec un <div> et tu écris dynamiquement le contenu (par innerHTML par exemple), une table ou autre chose
Ajouter un commentaire
Réponse
+1
moins plus
pourquoi ne peut tu pas mettre ta table dans le div ?

tu peut lire le code par innerHTML aussi pour le modifier
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

tune peux pas faire comme ça:

function NewLigne(){
document.getElementById("monid").innerHTML+="<tr><td>Tache 2</td></tr>";
}


le += ne peux pas rajouter une ligne dans ta table

j'ai déja vu ce forum qq un qui proposait une solution avec new.element en javascript ou qq chose dans ce genre fais une recherche dans ccm

tu as du pôt j'ai retouvé un bout d'exemple justement:

<script language="javascript">
function ajout_ligne(){
	var newRow = document.getElementById('matable').insertRow(-1);//-1 insère en derniere ligne
	//reste a voir comment incrementer Nom_
	//par un champ caché dont on lit et incremente la value 

	var newCell = newRow.insertCell(0);
	newCell.innerHTML = '<input type = "text" name = "Nom_1">';

	newCell = newRow.insertCell(1);
	newCell.innerHTML = '<input type = "text" name = "Prenom_1">';

	newCell = newRow.insertCell(2);

	 var ajout='<select class="service" name="activite_1" id="activite">';
	ajout+='<option value="">--</option>';
	ajout+='<option value="Commerçant">Commerçant</option>';
	ajout+='<option value="Profession liberale">Profession lib&eacute;rale</option>';
	ajout+='<option value="Artisan">Artisan</option>';
	ajout+='<option value="Negoce">N&eacute;goce</option>';
	ajout+='<option value="Industrie">Industrie</option>';
	ajout+='<option value="Autres">Autres</option>';
	ajout+='</select>';	
	
	newCell.innerHTML =ajout;

}
</script>
<form>
<table id="matable">

<tr>
<td>Nom</td>
<td>Prenom</td>
<td>Fonction</td>
</tr>
<tr>
<td><input type = "text" name = "Nom_1"></td>
<td><input type = "text" name = "Prenom_1"></td>
<td> <select class="service" name="activite_1" id="activite">
<option value="">--</option>
<option value="Commerçant">Commerçant</option>
<option value="Profession liberale">Profession lib&eacute;rale</option>
<option value="Artisan">Artisan</option>
<option value="Negoce">N&eacute;goce</option>
<option value="Industrie">Industrie</option>
<option value="Autres">Autres</option>
</select></td>
</tr>

<!--Lorsque on clique sur le bouton 'nouveau' une ligne s'ajoute en bas du tableau-->
</table>
<input type="button" value="Ajouter une personne" onClick="ajout_ligne();" >
</form> 
Ajouter un commentaire
Réponse
+1
moins plus
super merci alain cela fonctionne parfaitement

Bonne continuation ;)

pazz
Ajouter un commentaire
Réponse
+0
moins plus
Ngghhh.. innerHTML pour quoi faire? si c'est pour écrire du texte c'est un peu normal...
<table> ne contient pas de texte il faut lui faire des éléments:(<tr>+<td>, <tr>+<th>, <caption>)
Ajouter un commentaire
Réponse
+0
moins plus
rebonjour,

oui sa je sais mais malgrès tout sa ne marche pas l'element vient se loger au dessus du premier.

javascript:


document.getElementById('t-1').innerHTML+="<tr><td><textarea id='date1-2' class='txt' ondblclick='disabledORno(this.id);' readonly='readonly'></textarea></td>"+
"<td style='vertical-align: bottom'><div class='plus' id='plus1-2' onclick='AgrandirCase(this.id);' onmouseover='Mover(this.id)'"+
"onmouseout='Mout(this.id);'></div><input id='Time1-2' class='time' type='text' value='00:00' size='2' ondblclick='disabledORno(this.id);'"+
"readonly='readonly' /></td></tr><tr id='Valide1-2' style='display:none;'><td style='border:0px; vertical-align:top;' align='right'> "+
"<div class='Valide' id='valideD1-2' onclick='disabledORno();Sav(this.id);'><a href='#'>ok</a></div>"+
"</td><td style='border:0px; vertical-align:top;' align='right'><div class='Valide' id='valideT1-2'"+
"onclick='disabledORno();'><a href='#'>ok</a></div></td></tr>"
Ajouter un commentaire
Réponse
+0
moins plus
re,

oui sa je sais mais sa ne change rien l'objet a inserer vient se loger au dessus du premier.

exemple:

html

<table id="monid">
<tr><td>Tache 1</td></tr>
<tr><td onclick="NewLigne();">+</td></tr>
</table>


...........................................................

javascript

function NewLigne(){
document.getElementById("monid").innerHTML+="<tr><td>Tache 2</td></tr>";
}


ps: ceci est un exemple car je ne peux pas publier l'original (confidentialité).

merci
PAZZ
Ajouter un commentaire
Réponse
+0
moins plus
UP
Ajouter un commentaire
Réponse
+0
moins plus
Je suis d'accord avec oscarapace

Le plus simple est de faire:
<div id='emplacementtab'></div>

document.getElementById('emplacementtab').innerHTML="<table> [.....ton contenu.....] </table>";

Ajouter un commentaire
Réponse
+0
moins plus
Bonjours,

merci pour vos réponse, malheureusement cela ne convient pas car je l'aurai bien fait comme sa si je pouvai mais le problème est que la table est déjà presente et que je dois simplement y ajouter des element dynamiquement via javascript et non pas recréer toute la table.

ce problème est tellement bête qu'il me donne la migraine

pazz
Ajouter un commentaire
Réponse
+0
moins plus
UP!
Ajouter un commentaire
Réponse
+0
moins plus
Ça marche très bien,

Pour gérer le nom des champs on peut utiliser:

var rowCount = document.getElementById('matable').getElementsByTagName("TR").length;

Pour compter le nombre de ligne dans la table et l'utiliser dans le nom des champs
Ajouter un commentaire
Ce document intitulé « innerHTML dans une balise table » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?