JavaScript操作表格及CSS樣式

来源:https://www.cnblogs.com/hsiang/archive/2020/02/29/12387361.html
-Advertisement-
Play Games

在前端開發中,表格主要用於存儲結構化的數據,CSS主要用於修飾DOM元素,如何通過DOM來操作表格及CSS呢?本文主要通過一些簡單的小例子,簡述DOM對錶格和CSS的常見操作方法,僅供學習分享使用,如有不足之處,還請指正。 ...


概述

在前端開發中,表格主要用於存儲結構化的數據,CSS主要用於修飾DOM元素,如何通過DOM來操作表格及CSS呢?本文主要通過一些簡單的小例子,簡述DOM對錶格和CSS的常見操作方法,僅供學習分享使用,如有不足之處,還請指正。

獲取表格及數據

假如當前有一個表格,id為tb01,如下所示:

 1 <table id="tb01" width="300" border="1" cellspacing="2" cellpadding="2">
 2     <caption>人員表</caption>
 3     <thead>
 4         <tr>
 5             <td>姓名</td>
 6             <td>性別</td>
 7             <td>年齡</td>
 8         </tr>
 9     </thead>
10     <tbody>
11         <tr>
12             <td>Tom</td>
13             <td>boy</td>
14             <td>20</td>
15         </tr>
16         <tr>
17             <td>Jack</td>
18             <td>girl</td>
19             <td>19</td>
20         </tr>
21     </tbody>
22     <tfoot>
23         <tr>
24             <td colspan="3">合計:2</td>
25         </tr>
26     </tfoot>
27 </table>
View Code

獲取表格的標題[caption],表頭[thead],內容[tbody],表尾[tfoot],行數[rows],某一行的列數[cells]等等,如下所示:

 1 var table=document.getElementById('tb01');
 2 alert(table.caption.innerText);//獲取標題文本
 3 alert(table.tHead);//獲取表頭,輸出[object HTMLTableSectionElement]
 4 alert(table.tBodies);//獲取tbody 輸出:[object HTMLCollection]
 5 alert(table.tFoot);//獲取表尾,輸出[object HTMLTableSectionElement]
 6 
 7 alert(table.rows.length);//得到行數 4行
 8             
 9 alert(table.tBodies[0].rows.length);//獲取tbody下有多少行 ,2行
10 alert(table.tBodies[0].rows[0].cells.length);//獲取對應行有幾列,,3列

獲取單元格裡面的內容,如下所示:

1 alert(table.tBodies[0].rows[1].cells[1].innerHTML);//獲取tody下第二行第二列的內容 輸出:girl

如何刪除表格中的標題[caption],表頭[thead],表尾[tfoot],某行[row],某個單元格[cell],等內容,如下所示:

1 table.deleteCaption();//刪除標題            
2 table.deleteTHead();//刪除表頭
3 table.deleteTFoot();//刪除表尾
4 table.tBodies[0].deleteRow(0);//刪除tbody第0行
5 table.tBodies[0].rows[0].deleteCell(1);//刪除tbody第0行的第1列,右側單元格前移

創建表格及填充數據

從0創建一個新的表格並顯示在頁面上,步驟如下:

  1. 通過createElement('table')創建table元素
  2. 通過table.createCaption()創建標題
  3. 通過table.createTHead()創建表頭
  4. 通過table.createTBody()窗體tbody
  5. 通過tbody.insertRow(0)插入新行,並返回行對象。
  6. 通過insertCell(0)創建單元格
  7. 通過document.body.appendChild(table);將table插入到body中
 1 var table=document.createElement('table');
 2 table.border=1;
 3 table.width=300;
 4 table.createCaption().innerHTML='人員表2';
 5 var thead = table.createTHead();
 6 var tr = thead.insertRow();
 7 tr.insertCell(0).innerHTML='Name';
 8 tr.insertCell(1).innerHTML='Sexy';
 9 tr.insertCell(2).innerHTML='Age';
10 var tbody=table.createTBody();
11 var tr0 =tbody.insertRow(0);
12 tr0.insertCell(0).innerHTML='Lily';
13 tr0.insertCell(1).innerHTML='girl';
14 tr0.insertCell(2).innerHTML='12';
15 var tr1 =tbody.insertRow(1);
16 tr1.insertCell(0).innerHTML='Lucy';
17 tr1.insertCell(1).innerHTML='girl';
18 tr1.insertCell(2).innerHTML='13';
19 var tfoot=table.createTFoot();
20 var tr3 = tfoot.insertRow();
21 var tc3= tr3.insertCell(0);
22 tc3.innerHTML='合計:2';
23 tc3.colSpan=3;
24 document.body.appendChild(table);//將table插入到body中

CSS樣式

CSS有三種:

  1. 行內樣式,即設置標簽的style屬性
  2. 內聯樣式,即在<style>標簽內容設置
  3. 外部樣式,即通過<link href >引入

DOM操作style

有一個DIV樣式如下所示:

1 <div id="A01" style="color: red;background-color: blanchedalmond;font-size: 30px;float: left;">Hello JavaScript</div>

如何獲取style設置的樣式

 1 var box=document.getElementById('A01');
 2 alert(box.style);//box的行內樣式對象。輸出:[object MSStyleCSSProperties]
 3 alert( box.style.color);//獲取設置的顏色
 4 alert(box.style.backgroundColor);//獲取設置的背景顏色,如果設置屬性中有-連接符,則用大寫表示
 5 alert(box.style.fontSize);//獲取設置的字型大小 30px
 6 box.style.float;//關鍵字,會報錯
 7 alert(box.style.styleFloat);//IE11支持,獲取浮動 left
 8 alert(box.style.cssFloat);//IE11支持,獲取浮動 left
 9 alert(box.style.cssText);//獲取style的文本內容
10 box.style.setProperty('color','yellow');//IE11支持,設置樣式屬性

獲取計算後的樣式

1 //獲取計算後的樣式
2 var s = window.getComputedStyle(box,null);//IE11支持,返回[object CSSStyleDeclaration]
3 alert(s);
4 alert(s.color);//返回:rgb(255,0,0) 

獲取當前樣式

1 var s =box.currentStyle;//IE11支持,返回[object MSCurrentStyleProperties]
2 alert(s);
3 alert(s.color);//返回:red

改變樣式

有一個DIV元素樣式如下所示:

1 <div id="box" class="one" style="color: orange;">hello js!!!</div>

當元素的樣式是通過ID來設置的,則可以通過更換ID來變更樣式,但一般不建議此方式,因為id是唯一的,隨意變更會引起錯亂。如下所示:

1 var box=document.getElementById('box');
2 box.id='pox';//一般不建議此方式,因為id是唯一的。

通過class添加樣式

DOM通過className來獲取和變更樣式,如下所示:

 1 //通過class添加樣式
 2 var box=document.getElementById('box');
 3 box.className='two';//會把之前的樣式清除掉,再重新添加樣式,這樣會覆蓋之前的css樣式
 4 box.className='one two';//可以一次寫多個樣式
 5 function hasClass(element ,cname){
 6     var className=element.className;
 7     //return !!!className.match(new RegExp(cname));
 8     return  className.indexOf(cname,0)>-1;
 9 }
10 alert( hasClass(box,'one'));//返回是否包含樣式
11             
12 //增加樣式
13 function addClass(box,cname){
14     box.className+=' '+cname;
15 }
16             
17 //刪除樣式
18 function removeClass(box,cname){
19     box.className = box.className.replace(cname,' ');
20 }

DOM操作外部樣式

獲取link

 1 //獲取link
 2 var link=document.getElementsByTagName('link')[0];//獲取第一個link連接的外部css文件對象
 3 var sheet=link.sheet || link.stylesheet;//為了防止瀏覽器不相容
 4 alert(sheet);//輸出:[object CSSStyleSheet]
 5         
 6 //如果既有link又有style獲取會比較麻煩
 7 var sheets = document.styleSheets;
 8 alert(sheets);//獲取的是styleSheets列表 輸出[object StyleSheetList]
 9 var sheet=sheets[0];
10 alert( sheet.disabled);//是否被禁用
11 alert(sheet.href);//css樣式的路徑
12 alert(sheet.title);//獲取或設置link的title
13 alert(sheet.media[0]);//IE11,是undefined

CSS樣式規則集合

1 alert(sheet.cssRules);//CSS樣式規則集合,輸出 [object CSSRuleList]
2 alert(sheet.cssRules.length);//規則的長度
3 alert(sheet.cssRules[0].cssText);//第一個規則的css文本 .one{font-size:20px;}
4 alert(sheet.cssRules[0].selectorText);//第一個規則的選擇符 輸出.one
5 sheet.deleteRule(0);//刪除第一條規則
6 sheet.insertRule('body{background-color:orange;}',0);//插入一條規則,第一個參數:規則內容,第二參數:插入位置

以下方法和上述一致,可以相容兩種,來相容不同的瀏覽器,如下所示:

1 alert( sheet.rules);//輸出[object MSCSSRuleList]
2 alert(sheet.rules[0].selectorText);////第一個規則的選擇符 輸出.one
3 alert(sheet.rules[0].cssText);//第一個規則的css文本 .one{font-size:20px;}
4 sheet.addRule('body','background-color:orange;',0);//添加規則
5 sheet.removeRule(0);//刪除規則
6 alert( sheet.rules[0].style.color);//行內,內聯,樣式都可以獲取到
7 alert(sheet.cssRules[0].style.color);

備註

次北固山下
[ 唐 ] 王灣

客路青山外,行舟綠水前。潮平兩岸闊,風正一帆懸。

海日生殘夜,江春入舊年。鄉書何處達?歸雁洛陽邊。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫索引就象書的目錄一樣,如果在欄位上建立了索引,那麼以索引列為查詢條件時 可以加快查詢數據的速度 查詢資料庫,按主鍵查詢是最快的,每個表只能有一個主鍵列,但是可以有多個普通索 引列,主鍵列要求列的所有內容必須唯一,而普通索引列不要求內容必須唯一 主鍵就類似我們在學校學習時的學號一樣,班級里是唯一 ...
  • 11.1 以預設字元集 latin1 建庫 由於我們併為特別設置資料庫及客戶端字元集(因為編譯是二進位安裝,預設是 latin1 字元集) mysql create database oldboy; Query OK, 1 row affected (0.11 sec) mysql show cre ...
  • 0.1 使用語法: 通過在 mysql 中輸入 help grant 得到如下幫助信息 CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; GRANT ALL ON db1. TO 'jeffrey'@'localhost'; GRAN ...
  • 9.1 創建資料庫 命令語法:create database show databases like 'oldboy'; + + | Database (oldboy) | + + | oldboy | + + 1 row in set (0.04 sec) 查看建庫的語句 (註意:如果編譯時指定字 ...
  • 8.1 什麼是 SQL? SQL,英文全稱 Structured Query Language,中文意思是結構化查詢語言,它是一種對應關係數據中的數據進行定義和操作的語言方法,是大多數關係資料庫管理系統所支持的工業標準。 資料庫查詢語言 SQL 是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、 ...
  • [Android應用程式與SurfaceFlinger服務的連接過程分析 ](https://blog.csdn.net/luoshengyang/article/details/7857163) Android系統的開機動畫是由應用程式bootanimation來實現的,它位於/system/bi ...
  • 註意:無特殊說明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 基礎用法 PageView控制項可以實現一個“圖片輪播”的效果,PageView不僅可以水平滑動也可以垂直滑動,簡單用法如下: PageView滾動方向預設是水 ...
  • 瀏覽器通過form表單把數據提交伺服器涉及http協議,模式為瀏覽器發送請求=>伺服器接收=>自身處理=>結果返回瀏覽器=>瀏覽器根據結果展示頁面給用戶,請求分為GET和POST。註意:所有表單控制項(文本框、文本域、按鈕、單選框、覆選框等)都必須放在表單中,其次同一組的單選按鈕,name 取值一定要... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...