2010-03-19 6 views
1

J'ai une table qui ressemble à ceci:Ajouter à une table avec Javascript

<table id='t'> 
    <thead> 
     .... 
    </thead> 
    <tbody id='t_tbody'> 
    </tbody> 
</table> 
  • thead est rempli de contenu

  • tbody est vide

Je veux pour utiliser Javascript pour ajouter ceci (par exemple) à t_tbody:

<tr> 
    <td>Name</td> 
    <td>Points</td> 
    <td>Information</td> 
</tr> 

Comment est-ce que je peux faire ceci? J'ai besoin d'une fonction qui ajoute le dessus à t_tbody.

Notez que l'utilisation simplement

document.getElementById('t_tbody').innerHtml+="<tr>...</tr>" 

fonctionne très bien dans Firefox, mais pas dans IE.

Notez également que j'ai besoin d'utiliser du Javascript brut (c'est-à-dire sans cadre) pour ce projet, car je suis en train de terminer un projet qui a déjà été terminé en utilisant du Javascript brut.

+0

de ce que je me souviens, ses différentes basées sur le navigateur –

Répondre

4
var tr = document.createElement("tr"); 

var td = document.createElement("td"); 
td.innerHTML = "Name"; 
tr.appendChild(td); 

var td2 = document.createElement("td"); 
td2.innerHTML = "Points"; 
tr.appendChild(td2); 

var td3 = document.createElement("td"); 
td3.innerHTML = "Information"; 
tr.appendChild(td3); 

document.getElementById('t_tbody').appendChild(tr); 
+0

désolé, il n'a pas été la fonction d'ajout mais le appendChild un. la dernière ligne c'est parce que votre tbody n'a pas l'ID – Gregoire

+0

J'ai édité le html de sorte que la table et le tbody aient différents identifiants. Pourriez-vous mettre à jour votre javascript? Je pense que cela m'aiderait à mieux comprendre. Merci! J'ai également supprimé le commentaire ci-dessus, car cela n'avait pas vraiment de sens. – Cam

+0

@incrediman: fait :) – Gregoire

2

La réponse par Grégoire est en effet la façon la plus « correcte » de le faire, mais ne note que IE ne semble pas se plaindre si vous modifiez innerHTML des éléments non encore dans les DOM. Ainsi, la solution pourrait être réduite à:

var tr = document.createElement('tr'); 

tr.innerHTML = "<td>Name</td><td>Points</td><td>Information</td>"; 

document.getElementById('t_tbody').appendChild(tr);  
+0

Il s'avère que cela ne fonctionne pas dans FF, étrangement. Ce qui finit par hapingning est que le nom, les points et les informations sont imprimés les uns contre les autres sans espace - ignorant complètement le fait qu'ils sont td dans une table. Comme ceci: "NamePointsInformation". Je n'ai pas fini de tester dans IE ... merci quand même! – Cam

Questions connexes