Ne peut pas définir de innerHTML sur tbody dans IE
J'ai un tableau comme ceci:
<table>
<thead>
<tr>
<th colspan="1">a</th>
<th colspan="3">b</th>
</tr>
</thead>
<tbody id="replaceMe">
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
<td>data 4</td>
</tr>
</tbody>
</table>
et une méthode renvoie-moi, après une requête ajax:
<tr>
<td>data 1 new</td>
<td>data 2 new</td>
<td>data 3 new</td>
<td>data 4 new</td>
</tr>
Je veux changer le innerHTML comme
document.getElementById('replaceMe').innerHTML = data.responseText;
Cependant, il semble que IE ne pouvez pas définir de innerHTML sur <tbody>
. Quelqu'un peut m'aider avec une solution simple à ce problème?
- aussi, en utilisant une librairie comme jQuery n'est PAS une option.
Vous devez vous connecter pour publier un commentaire.
C'est vrai, innerHTML sur tbody éléments est en lecture seule dans IE
source: http://msdn.microsoft.com/en-us/library/ms533897(SV.85).aspx
Vous pouvez faire quelque chose comme cela pour le contourner:
Fondamentalement, il crée un temporaire nœud dans lequel vous injecter un plein
table
. Puis il remplace latbody
avec letbody
de la injectétable
. Si elle s'avère être lent, vous pouvez le faire plus rapidement par la mise en cachetemp
au lieu de créer à chaque fois.innerHTML
.Créer un temp nœud de stocker un tableau, puis les copier dans le tbody
À la fois les réponses ci-dessus semblent un peu floues. De Plus, à la création de la div n'est jamais supprimé, de sorte que l'appel de ces fonctions à plusieurs reprises mange de la mémoire. Essayez ceci:
Même avec ce code, si, MSIE ne semble pas correctement re-taille de la table de cellules dans ma demande, mais je suis combler un vide tbody balise générée avec la variable de contenu, tandis que le thead cellules' colspan valeurs sont réglées à une valeur fixe: le nombre maximal de cellules qui peuvent être générés tbody. Tandis que la table tbody est de 50 cellules de large, seulement deux colonnes à afficher. Peut-être que si la table a été initialement rempli, et les cellules ont été remplacés par la même structure interne, cette méthode pourrait fonctionner. Google Chrome fait un excellent travail de reconstruction de la table, tandis que d'Opera navigateur de bureau peut redimensionner à plusieurs colonnes, mais si vous supprimez les colonnes, les autres largeurs de colonne reste limité, comme ils l'ont été; cependant, avec l'Opéra, en se cachant la table (display=none) puis re-montrer (affichage=tableau), la table tbody cellules de taille correctement. J'ai renoncé avec Firefox. C'est la MSIE 6 de 2012 - un cauchemar à développer pour qui doit avoir une annotation supplémentaire ajouté juste pour faire de HTML-CSS layouts travail, car il n'est pas conforme aux normes que même MSIE est maintenant. Donc je n'ai pas testé la tbody.innerHTML fonctionnement dans Firefox.
Cela peut être résolu par la création d'une cale/polyfill pour .innerHTML. Cela pourrait vous rendre (vous, cher lecteur) a commencé:
http://jsfiddle.net/DLLbc/9/