Ajouter du contenu à une ligne de tableau (<TR>) avec du javascript?
J'ai un tableau comme suit:
<table>
<tr>
<td>col 1</td><td>col2</td>
</tr>
<tr id="insert">
<td>field</td><td>Field 2</td>
</tr>
<tr>
<td>another field</td><td>one more field</td>
</tr>
</table>
Maintenant la question est que j'ai besoin d'insérer dynamiquement de nouvelles lignes APRÈS la ligne du milieu (id = insert). J'ai un code javascript personnalisé fonction pour insérer elementsAFTER un élément à l'aide d'un insertBefore appel sur l'élément suivant.
Les nouvelles lignes de créer avec succès en utilisant le code javascript suivant:
var new_row = document.createElement('tr');
new_row.innerHTML="<td>test</td>";
insertAfter(document.getElementById("insert"), new_row);
Cependant, la nouvelle ligne refuse d'accepter une simple mise en forme html à l'aide de la innerHTML. La sortie finale de la nouvelle ligne ressemble à quelque chose comme:
<tr>test</tr>
Vous voir il ne veut pas à la sortie de la j'ai spécifié. Le script en lui-même est beaucoup plus complexe et donc, malheureusement, ajoutant manuellement chaque à l'aide d'un appendChild ou fonction similaire serait beaucoup trop long et probablement plutôt gourmandes en ressources. Est-il de toute façon je peux juste ajouter un "morceau de code html" à cette ligne du tableau et dans ce morceau de définir les colonnes de la table?
Je suis perplexe, toute aide est très appréciée.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le natif
insertCell()
méthode pour insérer des cellules.Donner à ceci un essai:
Exemple: http://jsfiddle.net/VzTJa/
ou vous pouvez l'accomplir sans votre
insertAfter()
fonction à l'aide deinsertRow()
ainsi.Exemple: http://jsfiddle.net/VzTJa/1/
Donner cette solution de contournement d'essayer:
Exemple: http://jsfiddle.net/VzTJa/2/
Fondamentalement crée un couple de chaînes de caractères représentant l'ouverture et la fermeture des balises d'une table. Vous concaténer avec votre contenu, et de le définir comme le
innerHTMl
temporairediv
, puis extraction de la ligne que vous voulez, et de faire une.appendChild()
.Il peut y avoir une meilleure façon, ou vous pouvez trouver un moyen d'améliorer celui-ci.
Je suis venu avec cette après jetant un coup d'oeil à une solution en cet article d'un gars qui apparemment travaillé sur IE et est en partie responsable de l'analyseur.
innerHTML
surtable
éléments (dans certains navigateurs). Je ne me souviens pas de ce que la solution de contournement est, mais je vais voir si je peux le trouver.innerHTML
dans IE. Lecture intéressante. La solution est basée sur l'examen rapide que j'ai pris à son. Vous préférez peut-être la sienne.Si vous pouvez utiliser jQuery, essayez la méthode append à partir d'elle. jQuery ajouter la référence
Si vous trouvez des performances d'être un problème, vous trouverez peut-être une amélioration par la construction de la dynamique DOM vous souhaitez ajouter en javascript avant ajoutant à la réelle DOM HTML élément qui va le rendre visible. Cela permet de garder votre numéro de repeint à un minimum.
document.getElementById("insert").parentNode.insertBefore(new_row, document.getElementById("insert").nextSibling);
Il peut paraître étrange, mais donnez-lui un coup de feu et je pense que vous serez actuellement surpris.