为什么Javascript没有正确创建表?

时间:2016-07-27 08:57:03

标签: javascript twitter-bootstrap firebase html-table firebase-realtime-database

我正在创建一个连接到Firebase实时数据库的程序,并在表格中显示该值。

她是我的代码:

remarksTable

Lookup<BaseEntity>是我从当前网址获取的ID,它包含正确的值,因此没有问题,路径也绝对正确。

这是表格代码:

Lookup<Agency>

现在,当我运行页面时,它连接到Firebase数据库并加载所需的值,创建表行和表数据,将文本附加到它,然后最终将行附加到id为{{1}的表但它没有正确创建行。请注意该表是使用Bootstrap创建的。

它的外观如下:

enter image description here

正如你所看到的,第一行显示正常,但是由javascript创建的接下来的两行看起来有点不同。

2 个答案:

答案 0 :(得分:2)

最可能的原因是你要将新行追加到table元素而不是其中的tbody元素,这与你未在问题中包含的样式表进行的交互很差。

请注意,所有表都有一个tbody元素。它的开始和结束标记是可选的,因此如果您没有明确提供一个(或更多),它将由HTML解析规则插入。

table structure

答案 1 :(得分:1)

@Quentin是对的,或者你可以这样简单地添加新行:

var table = document.getElementById("remarksTable");
var row = table.insertRow();
var rowData1 = row.insertCell(0);
var rowData2 = row.insertCell(1);
var rowData2 = row.insertCell(2);
rowData1.innerHTML = remark;
rowData2.innerHTML = timestamp;
rowData3.innerHTML = "some text";  

这是一个有效的演示

function addCells() {
  var table = document.getElementById("remarksTable");
  var row = table.insertRow();
  var rowData1 = row.insertCell(0);
  var rowData2 = row.insertCell(1);
  var rowData3 = row.insertCell(2);
  rowData1.innerHTML = "your remark";
  rowData2.innerHTML = "your timestamp timestamp";
  rowData3.innerHTML = "some text";
}
<table id="remarksTable" border=1>
  <tr>
    <td>first cell</td>
    <td>2nd cell</td>
    <td>3rd cell</td>
  </tr>
</table>
<button onclick="addCells()">Add New</button>