IE9 createElement и установка innerHTML отбрасывания тегов на заданной операции? - PullRequest
5 голосов
/ 11 ноября 2011

Не уверен, что я упускаю что-то очевидное, поскольку я впервые пытаюсь сделать многое с необработанным API-интерфейсом DOM (в отличие от jQuery или подобного).

Рассмотрим следующий код, где я вручную создаю TBODY с document.createElement, а затем устанавливаю его innerHTML.

<table id="myTable">
</table>

<script type='text/javascript'>
    var row = "<tr><td><span>col1</span></td><td>col2</td></tr>";
    var render = function(){
        var table = document.getElementById('myTable');
        var tbody = document.createElement('tbody');
        tbody.innerHTML = row;
        table.appendChild(tbody);

        console.log(tbody.innerHTML);
    };

    $(document).ready(function(){
        render();
    });
</script>

В Chrome и FF это работает так, как я думал - давая мне таблицу и т. Д. Однако в IE9, похоже, первые HTML-теги в innerHTML удаляются. то есть вместо

<TR><TD><SPAN>col1</SPAN></TD><TD>col2</TD></TR>

Я получаю

<SPAN>col1</SPAN></TD><TD>col2</TD></TR>

JSFiddle из вышеперечисленного: http://jsfiddle.net/pAJwu/

Есть идеи, что здесь происходит?

1 Ответ

7 голосов
/ 11 ноября 2011

IE до версии 9 не поддерживает установку innerHTML для некоторых элементов. Вот почему ; ссылка также включает в себя возможные обходные пути.

...