DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Javascript實例教程:DOM方法創建和修改表格
Javascript實例教程:DOM方法創建和修改表格
編輯:關於JavaScript     

<table>元素是HTML中最復雜的結構之一。要想創建表格,一般都必須涉及表示表格行、單元格、表頭等方面的標簽。由於涉及的標簽多,因而使用核心DOM方法創建和修改表格往往都免不了要編寫大量的代碼。假設我們要使用DOM來創建下面的HTML表格:

<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>

要是用核心DOM方法創建這些元素,得需要像下面這麼多的代碼:

//創建table
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>元素添加了一些屬性和方法。

為<table>元素添加的屬性和方法如下:

  • caption:保存這對<caption>元素(如果有)的指針;
  • tBodies:是一個<tbody>元素的HTMLCollection;
  • tFoot:保存著對<tfoot>元素(如果有)的指針;
  • tHead:保存著對<thead>元素(如果有)的指針
  • rows:是一個表格中所有行的HTMLCollection;
  • createTHead():創建<thead>元素,將其放到表格中,返回引用;
  • createTFoot():創建<tfoot>元素,將其放到表格中,返回引用;
  • createCaption();創建<caption>元素,將其放到表格中,返回引用;
  • deleteTHead();刪除<thead>元素;
  • deleteTFoot();刪除<tfoot>元素;
  • deleteCaption():刪除<caption>元素;
  • deleteRow(pos):刪除指定位置的行;
  • insertRow(pos):向rows集合中的指定位置插入一行。

為<tbody>元素添加屬性和方法有:

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

為<tr>元素添加的屬性和方法如下:

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

使用這些屬性和方法,可以極大的減少創建報個所需要的代碼數量。例如,使用這些屬性和方法可以將前面的代碼重寫如下:

//創建table
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);

在這次代碼中,創建<table>和<tbody>的代碼沒有變化。不同是創建兩行的部分,其中使用了HTML DOM定義的表格屬性和方法。在創建第一行時,通過<tbody>元素調用了insertRow()方法,傳入了參數0——表示應該插入的行放在什麼位置上。執行這一樣的代碼後,就會自動創建一行並將其插入到<tbody>元素的位置0上。因此馬上就可以通過tbody.rows[0]來引用新插入的行。

創建單元格的方式也十分相似,即通過<tr>元素調用insertCell()方法並傳入放置單元格的位置。然後,就可以通過tbody.rows[0].cells[0]來引用新插入的單元格,因為新創建的單元格被插入到了這一行的位置0上。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved