La création dynamique de table avec DOM
Quelqu'un peut me dire quel est le problème avec ce code? Je veux créer un tableau avec 2 colonnes et 3 lignes, et dans les cellules que je veux Texte1 et Texte2 sur chaque ligne. Ce code crée un tableau avec 2 colonnes et 3 lignes, mais c'est seulement du texte dans les cellules de la troisième rangée (les autres sont vides).
var tablearea = document.getElementById('tablearea');
var table = document.createElement('table');
var tr = [];
var td1 = document.createElement('td');
var td2 = document.createElement('td');
var text1 = document.createTextNode('Text1');
var text2 = document.createTextNode('Text2');
for (var i = 1; i < 4; i++){
tr[i] = document.createElement('tr');
for (var j = 1; j < 4; j++){
td1.appendChild(text1);
td2.appendChild(text2);
tr[i].appendChild(td1);
tr[i].appendChild(td2);
}
table.appendChild(tr[i]);
}
tablearea.appendChild(table);
- La probabilité que vous voulez
insertRow
etinsertCell
au lieu decreateElement
/appendChild
.
Vous devez vous connecter pour publier un commentaire.
Vous devez créer td et les nœuds de texte à l'intérieur de la boucle. Votre code crée seulement 2 td, seulement 2 sont visibles. Exemple:
C'est parce que vous êtes seulement à la création de deux
td
éléments et 2 nœuds de texte.La création de tous les nœuds dans une boucle
Recréer les nœuds à l'intérieur de votre boucle:
La création de cloner ensuite dans une boucle
Les créer à l'avance, et de les cloner à l'intérieur de la boucle:
Usine Table avec chaîne de texte
Faire un tableau d'usine:
Et de l'utiliser comme ceci:
Tableau de l'usine avec une chaîne de texte ou de rappel
L'usine pourrait facilement être modifié pour accepter une fonction aussi bien pour le quatrième argument afin de remplir le contenu de chaque cellule dans une manière plus dynamique.
Utilisée comme ceci:
Vous avez besoin pour créer de nouveaux TextNodes ainsi que td nœuds pour chaque colonne, de ne pas les réutiliser parmi toutes les colonnes que votre code est en train de faire.
Edit:
Réviser votre code comme suit:
quand vous dites "appendchild' vous fait bouger de votre enfant d'un parent à l'autre.
vous devez créer un nœud pour chaque cellule.
Dans mon exemple, le numéro de série est géré selon les mesures prises sur chaque ligne à l'aide de css. J'ai utilisé une forme à l'intérieur de chaque ligne, et lors de la nouvelle ligne créée alors la forme seront réinitialisés.
CSS:
HTML:
Espère que cette aide.