Как использовать createElement для создания новой таблицы? - PullRequest
5 голосов
/ 24 февраля 2010

Почему следующий код не работает?

<html>
<head>
    <script type="text/javascript">
    function addTable() {
        var table = document.createElement('table');
        table.innerHTML = "<tr><td>123</td><td>456</td></tr>";
        document.getElementById("addtable").appendChild(table);
    }
    </script>
</head>
<body>
    <input type="submit" value="New Table" onClick="addTable()"/>
    <div id="addtable"></div>
</body>
</html>

Ответы [ 2 ]

23 голосов
/ 24 февраля 2010

Насколько мне известно, установка свойства innerHTML элемента table или элемента таблицы (например, tbody или thead) не работает в Internet Explorer (EDIT: я только что проверил - с помощью ietester и простой IE8. Результатом является «неизвестная ошибка времени выполнения» для IE6 и IE8, и он приводит к сбою IE7, но это может быть специфической проблемой IEtester).

Стандартный способ добавления строк в таблицу использует метод insertRow() для элемента таблицы или раздела таблицы (ищите HTMLTableElement и HTMLTableSectionElement в этой спецификации DOM):

<script type="text/javascript">
function addTable() {
    var c, r, t;
    t = document.createElement('table');
    r = t.insertRow(0); 
    c = r.insertCell(0);
    c.innerHTML = 123;
    c = r.insertCell(1);
    c.innerHTML = 456;
    document.getElementById("addtable").appendChild(t);
}
</script>

В скрипте не создается явный раздел таблицы. AFAIK, TBODY создается автоматически, и в него вставляются строки.

РЕДАКТИРОВАТЬ: в отношении IE, я должен отметить, что вы можете добавить таблицу с содержимым и все, установив свойство innerHTML, но HTML-код, который вы вводите, должен быть полной таблицей. Так что это работает, даже на IE:

<script type="text/javascript">
function addTable() {
    var html = "<table><tr><td>123</td><td>456</td></tr></table>";
    document.getElementById("addtable").innerHTML = html;
}
</script>
0 голосов
/ 05 апреля 2018
//_table my current table
var table = document.createElement('table'); //new table
table.innerHTML = _table.innerHTML; //clone table innerHTML
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...