Проблема здесь в том, что правильная структура элемента <table>
отсутствует.При работе с таблицами базовая структура выглядит следующим образом:
<table>
<thead>
<tr>
<th>Heading for the table</th>
</tr>
</thead>
<tbody>
<tr>
<td>A row of data</td>
</tr>
</tbody>
</table>
Логика заключается в том, что при работе с таблицами необходимо хранить метки столбцов и фактические данные отдельно.Поскольку большинство браузеров заполняют <tbody>
как часть процесса исправления неработающего HTML, мало кто это понимает.Когда браузер видит, что вы добавляете <tr>
, он не знает, пытаетесь ли вы добавить его к <thead>
или <tbody>
, поэтому происходит сбой.
Ниже показано правильноеМетод добавления строк:
<html>
<head>
<title>Javascript Test</title>
<script>
function addRow() {
var mytbody = document.getElementById('mytbody');
var row = document.createElement('tr');
var cell = document.createElement('td');
var text = document.createTextNode('This is a row');
cell.appendChild(text);
row.appendChild(cell);
mytbody.appendChild(row);
}
</script>
</head>
<body>
<form action="#">
<table id="mytable">
<tbody id="mytbody">
<tr>
<td>This is a row</td>
</tr>
</tbody>
</table>
<input type="button" onclick="addRow()" value="Add A Row"/>
</form>
</body>
</html>