J'essaie de comprendre comment modifier le DOM pour remplacer un élément avec une table. Le code suivant montre un snafu que j'ai rencontré: si j'essaie de remplacer un élément par un simple paragraphe, cela fonctionne bien, mais si j'essaie d'utiliser une table, rien n'apparaît dans Internet Explorer 8, bien que d'autres navigateurs fonctionnent encore. Comment puis-je réécrire le code pour le faire fonctionner dans tous les navigateurs?Comment remplacer un élément DOM enfant par une table, compatible avec Internet Explorer?
HTML:
<p>
<a onclick="replaceElementTest(this);">Replace this text</a>
</p>
<p>
<a onclick="replaceWithTableTest(this);">Replace with test table</a>
</p>
JavaScript:
// Works in all browsers
function replaceElementTest(domElement){
var p = document.createElement("p");
p.innerHTML = "This element got REPLACED!";
domElement.parentNode.replaceChild(p,domElement);
}
// Doesn't work in IE8
function replaceWithTableTest(domElement){
var table, tr, td;
table = document.createElement("table");
tr = document.createElement("tr");
td = document.createElement("td");
td.innerHTML = "This element got replaced by a TABLE!"
table.appendChild(tr);
tr.appendChild(td);
domElement.parentNode.replaceChild(table,domElement);
}
Eh bien, j'utiliser une bibliothèque telle jQuery qui prend en charge la compatibilité cross-browser ... n'a pas affiché cette réponse que parce que Je ne sais pas si cela pourrait être une option? – Lucero
Peut-être essayer de changer le innerHTML après que vous appendChild (Je ne peux pas le tester moi-même, je n'ai pas IE8 pour le moment) – DaiYoukai
Changer le innerHTML après appendChild n'avait aucun effet visible. Je prévois d'utiliser éventuellement jQuery, mais je pense que je devrais d'abord me familiariser avec au moins quelques différences de navigateur. – camomilk