轉 使用JavaScript和DOM動態建立表格

來源:互聯網
上載者:User

概況 - Sample1.html
<html>
<head>
<title>執行個體代碼 - 使用JavaScript和DOM建立HTML表格</title>
<script>function start() {
//擷取body標籤
var mybody = document.getElementsByTagName("body")[0];

// 建立一個<table>元素和一個<tbody>元素
mytable = document.createElement("table");
mytablebody = document.createElement("tbody");

//建立所有的儲存格
for(var j = 0; j < 2; j++) {
   // 建立一個<tr>元素
   mycurrent_row = document.createElement("tr");
   for(var i = 0; i < 2; i++) {
   // 建立一個<td>元素
   mycurrent_cell = document.createElement("td");
   //建立一個文本節點
   currenttext = document.createTextNode("儲存格是第"+j+"行,第"+i+"列");
   // 將建立的文本節點添加到<td>裡
   mycurrent_cell.appendChild(currenttext);
   // 將列<td>添加到行<tr>
   mycurrent_row.appendChild(mycurrent_cell);
   }
   // 將行<tr>添加到<tbody>
   mytablebody.appendChild(mycurrent_row);
}
// 將<tbody>添加到<table>
mytable.appendChild(mytablebody);
//將<table>添加到<body>
mybody.appendChild(mytable);
// 將表格mytable的border屬性設定為2
mytable.setAttribute("border", "2");
}

</script>
</head>
<body onload="start()">
</body>
</html>

基本的DOM方法 - Sample2.html
  element.getElementsByTagName 返回一個有特定標籤名的子項目的列表。你可以通過調用一個item方法(傳遞一個index參數它)來從這個子項目列表中擷取一個元素。請注意列表第一個子項目的index為0。下一個主題繼續前面的Table例子。下面這個執行個體更加簡單,顯示了一些基本的方法:

<html>
<head>
<title>執行個體代碼 - 使用JavaScript和DOM建立HTML表格</title>
<script>function start() {
// 擷取一個包含所有body元素的列表(將只有一個)
// 然後挑選清單裡的第一個元素
myBody = document.getElementsByTagName("body")[0];

// 擷取body字元素中所有的p元素
myBodyElements = myBody.getElementsByTagName("p");

//擷取p元素列表的第二個元素(索引從0開始)
myP = myBodyElements[1];
}</script>
</head>
<body onload="start()">
<p>hi</p>
<p>hello</p>
</body>
</html>
使用document.createTextNode(”..”)建立文本節點
使用文檔對象調用createTextNode方法建立你的文本節點。你只需要輸入常值內容。傳回值是一個表示這個文本節點的對象。myTextNode = document.createTextNode("world");

以上代碼建立一個文本資料是“word”的TEXT_NODE類型(文字塊)節點,變數myTextNode指向這個節點對象。你需要設定這個文本節點為其他節點元素的位元組點來插入這個文本到你的html頁面裡。
使用appendChild(..)插入元素
所以,通過調用myP.appendChild([node_element]),你設定這個文本節點為第二個p元素的位元組點。

myP.appendChild(myTextNode);


試這個例子,注意“hello”和“world”兩個詞是連在一起的:“helloworld”。所以在當你看到html頁面時兩個文本節點hello和
world看起來好像是一個節點,而實際上在這個文檔模型裡有兩個節點。第二個節點是一個新的TEXT_NODE類型節點,並且是第二個p標籤的第二個字
節點。在文檔樹裡顯示了剛建立的文本節點。

createTextNode和appendChild是在hello和world之間添加空格的一種簡單的方法。需要特別注意的是appendChild方法將添加在最後一個子節點後面,就像world被添加到hello後面。所以如果你想在hello和world之間添加一個文本節點需要使用insertBefore方法而不是appendChild。

使用文檔對象和createElement(..)方法建立新元素
 
 你可以使用createElement方法建立新的HTML元素或者其他任何你想要的其他元素。例如,如果你想為< body
>元素添加一個位元組點< p
>元素,可以使用前例中的myBody添加一個新的元素節點。建立一個節點只需要調用
document.createElement(”tagname”)。例如:

myNewPTAGnode = document.createElement("p");
myBody.appendChild(myNewPTAGnode);


使用removeChild(..)方法刪除節點
  每個節點都可以刪除。下面這行代碼刪除myP(第二個< p >元素)裡包含單詞world的文本節點。

myP.removeChild(myTextNode);

  最後你可以把包含單詞world的文本節點myTextNode添加到新建立的< p >元素裡:

myNewPTAGnode.appendChild(myTextNode);

  修正的對象樹最後像這樣:

動態建立一個表格(回到Sample1.html)
  文章的剩餘部分將回到Sample1.html。顯示了例子中建立的表格的對象樹結構。
回顧HTML表格結構

建立元素節點並把它們添加到文檔樹
建立sample1.html裡的表格的基本步驟:

  • 擷取body對象(文檔對象的第一項)
  • 建立所有的元素
  • 最後,按照的表格結構添加每一個位元組點下面的原始碼是sample1.html的注釋

start函數的最後有一行新代碼,使用另一個DOM方法setAttribute設定了表格的border屬性。setAttribute方法有兩個參數:屬性名稱和屬性值。你可以使用setAttribute方法設定任何元素的任何屬性。

<head>
<title>執行個體代碼 - 使用JavaScript和DOM建立HTML表格</title>
<script>function start() {
// 擷取body
var mybody = document.getElementsByTagName("body")[0];

// 建立<table>和<tbody>元素
mytable = document.createElement("table");
mytablebody = document.createElement("tbody");

//建立所有的儲存格
for(var j = 0; j < 2; j++) {
   // 建立一個 <tr> 元素
   mycurrent_row = document.createElement("tr");

   for(var i = 0; i < 2; i++) {
   // 建立一個<td> 元素
   mycurrent_cell = document.createElement("td");
   // 建立一個文本節點
   currenttext = document.createTextNode("儲存格是第" + j + "行,第" + i + "列");
   // 把建立的文本節點添加到<td>元素
   mycurrent_cell.appendChild(currenttext);
   // 把<td>添加到<tr>行
   mycurrent_row.appendChild(mycurrent_cell);
   }
   // 把<tr>行添加到<tbody>
   mytablebody.appendChild(mycurrent_row);
}

// 把 <tbody> 添加到 <table>
mytable.appendChild(mytablebody);
// 把 <table> 添加到 <body>
mybody.appendChild(mytable);
// 把mytable的border屬性設定為2;
mytable.setAttribute("border","2");
}</script>
</head>
<body onload="start()">
</body>
</html>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.