整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「HTML」操作表格

          lt;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>元素添加了一些屬性和方法。
          為元素添加的屬性和方法如下。


          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上。
          總之,使用這些屬性和方法創建表格的邏輯性更強,也更容易看懂,盡管技術上這兩套代碼都是正確的。


          想要了解更多Java基礎知識,可以點擊評論區鏈接和小編一起學習java吧,此視頻教程為初學者而著,零基礎入門篇!給同學們帶來全新的Java300集課程啦!java零基礎小白自學Java必備優質教程_手把手圖解學習Java,讓學習成為一種享受_嗶哩嗶哩_bilibili

          ?

          我們都知道普通的HTML自帶的功能相對有限,很多復雜的交互式場景,如果手動去寫功能的話會非常的復雜,而且可擴展性差,就拿HTML表格來說,對于初學者或者對于復雜的拖拽式交互編程不熟悉的話會很浪費時間,因此今天就介紹一個第三方的插件——Table-draagger,來輕松實現類似的功能。Table-draagger是用于構建可重排序的拖放表的極簡主義純Javascript庫!



          Github

          https://github.com/sindu12jun/table-dragger


          特征

          Table-draagger因為其以下幾個特征而讓拖拽和排序的實現變得如此簡單:

          • 非常容易配置
          • 能夠同時對列或行進行排序
          • 排序時動畫流暢
          • 沒有臃腫的依賴
          • 提供觸摸事件(意味著在觸摸設備可以實現一些你想要的功能)


          安裝使用

          • 安裝

          可以在npm上獲得它:

          npm install table-dragger --save
          

          或者引用壓縮的js文件

          <script src="../node_modules/table-dragger/dist/table-dragger.min.js"></script>
          

          或者嘗試開發中的不穩定版本

          npm install table-dragger@next --save
          

          • 快速入門

          請看以下代碼:

          import tableDragger from 'table-dragger'
          tableDragger(el, options?)
          

          <table id="table">
          <thead>
          <tr>
          <th class='handle'>header1</th>
          <th class='handle'>header2</th>
          </tr>
          </thead>
          <tbody>
          <tr>
          <td>conten1</td>
          <td>conten2</td>
          </tr>
          </tbody>
          </table>
          

          var el = document.getElementById('table');
          var dragger = tableDragger(el, {
          mode: 'row',
          dragHandler: '.handle',
          onlyBody: true,
          });
          dragger.on('drop',function(from, to){
          console(from);
          console(to);
          });
          

          你可以在不設置任何參數的情況下使用默認的拖拽和排序方式,當然以下是你可以配置的選項:

          • options.mode

          1、將mode設置為column,用戶拖動和排序表的列

          2、將mode設置為row,用戶拖動并排序表的行

          3、設置mode為free,用戶根據點擊后鼠標移動的方向拖動行或列。注意,必須在自由模式下指定dragHandler。

          • options.dragHandler

          dragHandler是表中的拖動句柄選擇器默認情況下,在列模式下,dragHandler是表的第一行;在行模式下,則是第一列。

          • options.onlyBody

          在行模式下將onlyBody設置為true時,用戶只能在tbody中提升行。

          • API

          下面是返回對象的API


          tableDragger(document.querySelector('#event-table'), { mode: 'free', dragHandler: '.handle', onlyBody: true })
          .on('drag', () => {
          console.log('drag');
          })
          .on('drop', (from, to, el, mode) => {
          console.log(`drop ${el.nodeName} from ${from} ${mode} to ${to} ${mode}`);
          })
          .on('shadowMove', (from, to, el, mode) => {
          console.log(`move ${el.nodeName} from ${from} ${mode} to ${to} ${mode}`);
          })
          .on('out', (el, mode) => {
          console.log(`move out or drop ${el.nodeName} in mode ${mode}`);
          });
          


          總結

          Table-draagger為我們節省了很多手動封裝表格排序和拖拽功能的時間,當然目前很多第三方框架已經實現了類似的功能,這更適用于原生的html表格,你還可以通過一些手段記憶用戶拖拽,這只是其中一種思路,Enjoy it!~

          1. 表格標題如何設置?
          2. 表格在前端代碼里的完整結構?
          3. 表格如何合并?

          表格標題如何設置?

          使用wps制作表格的時候,一般都會起個標題。標題使用caption標簽,位置放在table標簽內的第一行。

          <caption>我是表格的標題</caption>
          

          設置表格標題

          表格在前端代碼里的完整結構?

          表格除了標題外,實際上就是由3部分構成的。表頭(頁眉)、表體(主體)、表尾(頁腳)

          1、表頭

          <thead></thead>
          

          表頭

          2、表體

          <tbody></tbody>
          

          表體

          3、表尾

          <tfoot></ftood>
          

          表尾

          完整代碼如下

          table完整結構

          表格如何合并?

          單元格合并一共有2種方式,跨行合并和跨列合并

          1、跨行合并--rowspan屬性

          <tr>
          	<th>姓名</th>
          	<th>電話</th>
          </tr>
          <tr>
          	<td rowspan="2">小明</td>
          	<td>123</td>
          </tr>
          <tr>
          	<td>321</td>
          </tr>
          

          跨行合并

          2、跨列合并--colspan屬性

          <tr>
          	<th>姓名</th>
          	<th colspan="2">電話</th>
          </tr>
          <tr>
          	<td >小明</td>
          	<td>123</td>
          	<td>321</td>
          </tr>
          

          跨列合并

          無論是跨行合并還是跨列合并,本質都是占用別的行或者列,實際上是破壞了表格的正常結構,尤其是在書寫代碼的時候,前面占用合并了幾個,后面就要缺少幾個。

          總結

          table進階


          主站蜘蛛池模板: 美女视频一区二区| 无码人妻久久一区二区三区| 国产一区二区好的精华液 | 一区二区三区四区视频在线| 免费无码A片一区二三区| 久久99国产精一区二区三区| 成人国产一区二区三区| 久久精品国内一区二区三区| 亚洲一区二区三区丝袜| 亚洲综合一区二区三区四区五区 | 麻豆精品久久久一区二区| 久久亚洲中文字幕精品一区四| 果冻传媒一区二区天美传媒| 日韩人妻无码一区二区三区| 末成年女AV片一区二区| 99久久人妻精品免费一区| 亚洲第一区二区快射影院| 欧美成人aaa片一区国产精品| 波多野结衣中文字幕一区| 久久久久人妻一区精品| 国产一区二区电影在线观看| 亚州日本乱码一区二区三区 | 国产丝袜美女一区二区三区| 一区二区在线免费观看| 中文字幕乱码人妻一区二区三区| 激情综合丝袜美女一区二区| 亚洲国产成人一区二区三区| 日韩精品久久一区二区三区| 在线观看午夜亚洲一区| 精品无码国产AV一区二区三区 | 爆乳无码AV一区二区三区| 男人的天堂精品国产一区| 国产成人AV一区二区三区无码| 人妻精品无码一区二区三区 | 久久精品一区二区国产| 蜜桃视频一区二区| 色婷婷av一区二区三区仙踪林| 99精品久久精品一区二区| 国产视频一区二区在线观看| 无码少妇一区二区三区浪潮AV| 一区二区三区在线视频播放|