DOM操作表格

小火柴的藍色理想發表於2015-09-27

前面的話

  表格table元素是HTML中最複雜的結構之一。要想建立表格,一般都必須涉及表示表格行、單元格、表頭等方面的標籤。由於涉及的標籤多,因而使用核心DOM方法建立和修改表格往往都免不了要編寫大量的程式碼。本文將詳細介紹DOM操作表格的屬性和方法

 

需求

  要通過DOM實現下列格式的表格結構

<table border = "1" width = "100%">
    <tbody>
        <tr>
            <td>Cell 1,1</td>
            <td>Cell 2,1</td>
        </tr>
        <tr>
            <td>Cell 1,2</td>
            <td>Cell 2,2</td>
        </tr>        
    </tbody>
</table>

 

DOMcore

  如果通過DOMcore方法,則方法如下

//建立表格
var table = document.createElement("table");
table.border = "1";
table.width = "100%";

//建立tbody
var tbody = document.createElement("tbody");
table.appendChild(tbody);

//建立第一行
var row1 = document.createElement("tr");
tbody.appendChild(row1);
var cell1_1 = document.createElement("td");
cell1_1.appendChild(document.createTextNode("Cell 1,1"));
row1.appendChild(cell1_1);
var cell2_1 = document.createElement("td");
cell2_1.appendChild(document.createTextNode("Cell 2,1"));
row1.appendChild(cell2_1);

//建立第二行
var row2 = document.createElement("tr");
tbody.appendChild(row2);
var cell1_2 = document.createElement("td");
cell1_2.appendChild(document.createTextNode("Cell 1,2"));
row2.appendChild(cell1_2);
var cell2_2 = document.createElement("td");
cell2_2.appendChild(document.createTextNode("Cell 2,2"));
row2.appendChild(cell2_2);

//將表格新增到文件主體中
document.body.appendChild(table);

 

屬性和方法

  顯然DOM程式碼很長,為了方便構建表格,HTML DOM為<table>、<tbody>、<tr>元素新增了屬性和方法。

【1】為<table>元素新增的屬性和方法

caption:儲存著對<caption>元素的指標
tBodies:是一個<tbody>元素的HTMLCollection
tFoot:儲存著對<tfoot>元素的指標
tHead:儲存著對<thead>元素的指標
createTHead():建立<thead>元素,將其放到表格中,返回引用
createTFoot():建立<tfoot>元素,將其放到表格中,返回引用
createCaption():建立<caption>元素,將其放到表格中,返回引用
deleteTHead():刪除<thead>元素
deleteTFoot():刪除<tfoot>元素
deleteCaption():刪除<caption>元素

 【2】為<tbody>元素新增的屬性和方法

rows:儲存著<tbody>元素中行的HTMLCollection
deleteRow(pos):刪除指定位置的行
insertRow(pos):向rows集合中的指定位置插入一行,返回對新插入行的引用

【3】為<tr>元素新增的屬性和方法

cells:儲存著<tr>元素中單元格的HTMLCollection
deleteCell(pos):刪除指定位置的單元格
insertCell(pos):向cells集合中的指定位置插入一個單元格,返回對新插入單元格的引用

 

程式碼重寫

//建立表格
var table = document.createElement("table");
table.border = "1";
table.width = "100%";

//建立tbody
var tbody = document.createElement("tbody");
table.appendChild(tbody);

//建立第一行
tbody.insertRow(0);
tbody.rows[0].insertCell(0);
tbody.rows[0].cells[0].appendChild(document.createTextNode("Cell 1,1"));
tbody.rows[0].insertCell(1);
tbody.rows[0].cells[1].appendChild(document.createTextNode("Cell 2,1"));

//建立第二行
tbody.insertRow(1);
tbody.rows[1].insertCell(0);
tbody.rows[1].cells[0].appendChild(document.createTextNode("Cell 1,2"));
tbody.rows[1].insertCell(1);
tbody.rows[1].cells[1].appendChild(document.createTextNode("Cell 2,2"));

//將表格新增到文件主體中
document.body.appendChild(table);

 

效果展示

<script>
//建立表格
var table = document.createElement("table");
table.border = "1";
table.width = "100%";

//建立tbody
var tbody = document.createElement("tbody");
table.appendChild(tbody);

//建立第一行
tbody.insertRow(0);
tbody.rows[0].insertCell(0);
tbody.rows[0].cells[0].appendChild(document.createTextNode("Cell 1,1"));
tbody.rows[0].insertCell(1);
tbody.rows[0].cells[1].appendChild(document.createTextNode("Cell 2,1"));

//建立第二行
tbody.insertRow(1);
tbody.rows[1].insertCell(0);
tbody.rows[1].cells[0].appendChild(document.createTextNode("Cell 1,2"));
tbody.rows[1].insertCell(1);
tbody.rows[1].cells[1].appendChild(document.createTextNode("Cell 2,2"));

//將表格新增到文件主體中
document.body.appendChild(table);
</script>

相關文章