隔行換色總結

?功能效果展示:

第一種思路:

使用數組,將數組的內容渲染到頁面上,序號也就是將數組的下標輸出到第一個td上,將數組的內容輸出到第二個td上,(使用``拼接字符串)

具體操作:

1.HTML 結構搭建?

  • 首先,讓我們來看一下 HTML 代碼。我們創建了一個基本的表格結構,<table>標簽定義了整個表格,cellspacing="0"屬性用于消除表格單元格之間的間距。?
  • <thead>標簽內包含了表格的頭部信息,這里有一行<tr>,其中三個<th>標簽分別定義了 “序號”“內容”“操作” 三個表頭。?
  • <tbody>標簽則是表格主體內容的容器,初始時,我們預留了它作為動態生成表格行的區域,注釋掉了一個示例的<tr>行,這行只是為了展示結構,實際運行時將由 JavaScript 動態生成。?
  • 最后,還有一個<button>按鈕,其類名為add,并綁定了一個點擊事件οnclick="addData()",用于觸發添加數據行的操作。

    html:

    <table cellspacing="0"><thead><tr><th>序號</th><th>內容</th><th>操作</th></tr></thead><tbody><!-- <tr><td>1</td><td>data</td><td><button class="del">刪除</button></td></tr> --></tbody></table><button class="add" onclick="addData()">添加行</button>
    

    css:

    2.CSS 樣式美化?

    • 為了讓表格看起來更加美觀和易于閱讀,我們添加了一些 CSS 樣式。?
    • *選擇器用于清除所有元素的默認內外邊距,確保表格布局的一致性。?
    • table選擇器雖然目前只注釋掉了設置邊框的代碼,但為后續可能的整體表格樣式調整預留了空間。?
    • th選擇器為表頭單元格設置了內邊距和較粗的邊框,使其更加醒目。?
    • td選擇器為普通單元格設置了適當的內邊距和較細的邊框,區分表頭與內容單元格的視覺效果。

      <style>* {margin: 0;padding: 0;}table {/* border: black 2px solid; */}th {padding: 5px 20px 5px 20px;border: 2px solid black;}td {padding: 5px 20px 5px 20px;border: 1px solid black;}</style>

      js:

      3.JavaScript 功能實現?

      • 初始化變量:?
      • 我們定義了一個數組arr,并初始化為[100],這個數組將用于存儲表格中的數據。?
      • 獲取頁面中的<tbody>元素,并賦值給變量body,后續將通過它來操作表格主體內容。?
      • 獲取類名為add的按鈕元素,并賦值給變量add?
      • 表格渲染函數apply:?
      • apply函數負責將數組中的數據渲染到表格中。它首先初始化一個空字符串str,用于存儲生成的 HTML 代碼片段。?
      • 通過for循環遍歷數組arr,在每次循環中,使用模板字符串生成一個<tr>行的 HTML 代碼。這里利用三元運算符${i%2!==0?'style="background-color: aqua;"':''}根據i的奇偶性為<tr>行設置不同的背景顏色,奇數行背景色為aqua,偶數行保持默認。?
      • 然后將當前行的序號i + 1、數組中的數據arr[i]以及一個帶有刪除功能的<button>按鈕(點擊時調用delData(${i})函數)分別插入到對應的<td>元素中。?
      • 循環結束后,將生成的完整 HTML 字符串str賦值給body.innerHTML,從而實現表格的渲染。?
      • 添加數據函數addData:?
      • addData函數用于實現添加數據行的功能。它首先將變量num的值增加 100,這里的num用于生成新的數據值。?
      • 然后將新生成的num值通過arr.push(num)方法添加到數組arr中,并在控制臺打印數組arr,方便查看數據更新情況。?
      • 最后調用apply函數,重新渲染表格,使新添加的數據能夠及時顯示在頁面上。?
      • 刪除數據函數delData:?
      • delData函數接收一個參數index,該參數表示要刪除的數據在數組中的索引。?
      • 它通過arr.splice(index, 1)方法從數組arr中移除指定索引位置的數據。?
      • 同樣調用apply函數,重新渲染表格,實現刪除數據行后頁面的實時更新。
      let arr = [100];let body = document.getElementsByTagName('tbody')[0];let add = document.getElementsByClassName('add')[0];console.log(add);function apply() {let str = "";for (i = 0; i < arr.length; i++) {str +=`<tr ${i%2!==0?'style="background-color: aqua;"':''}><td>${i+1}</td><td>${arr[i]}</td><td><button class="del" onclick="delData(${i})">刪除</button></td></tr>`;}body.innerHTML = str;}apply();let num = 100;// 添加函數function addData() {num += 100;console.log(num);arr.push(num);console.log(arr);apply();}// 刪除function delData(index){arr.splice(index,1);apply();}

      以上是第一種思路:

      第二種思路中,html和css是一致的,所以我們就只講js中的具體操作。

      • dataNum:初始值為 100,用于為新添加的行提供數據。
      // 添加函數function addData() {let tr = document.createElement('tr');let tdNum = document.createElement('td');let tdData = document.createElement('td');let tdDel = document.createElement('td');// let num = document.createTextNode();let data = document.createTextNode(dataNum);let delText = document.createTextNode("刪除");let del = document.createElement('button');del.appendChild(delText);tdDel.appendChild(del);// tdNum.appendChild(num);tdData.appendChild(data);tr.appendChild(tdNum);tr.appendChild(tdData);tr.appendChild(tdDel);console.log(tr);body.appendChild(tr);dataNum += 100;rowColor();numOrder();}// 序號函數function numOrder() {let trNum = body.children;console.log(trNum);for (i = 0; i < trNum.length; i++) {console.log(i);trNum[i].children[0].innerHTML = i+1;}rowColor();}// 顏色函數function rowColor() {let trNum = body.children;for (i = 0; i < trNum.length; i++) {if (i % 2 !== 0) {console.log(document.getElementsByTagName('tr')[i]);document.getElementsByTagName('tr')[i+1].style.backgroundColor = "red";}else{document.getElementsByTagName('tr')[i+1].style.backgroundColor = "white";}}}// 刪除函數body.addEventListener('click', function(e) {console.log(e.target.innerText);if (e.target.innerText == "刪除") {body.removeChild(e.target.parentElement.parentElement);}rowColor();numOrder();})
      
      1. 添加函數?addData

        • 創建一個新的表格行?tr?以及三個單元格?tdNumtdData?和?tdDel
        • 創建文本節點?data?和?delText,分別表示數據和 “刪除” 按鈕的文本。
        • 創建 “刪除” 按鈕?del,并將?delText?添加到按鈕中。
        • 將?data?添加到?tdData?中,將?del?添加到?tdDel?中。
        • 將三個單元格添加到?tr?中,并將?tr?添加到表體?body?中。
        • dataNum?增加 100,以便下次添加行時使用新的數據。
        • 調用?rowColor?和?numOrder?函數,更新表格的顏色和序號。
      2. 序號函數?numOrder

        • 獲取表體中的所有行?trNum
        • 遍歷這些行,為每行的第一個單元格設置序號,序號從 1 開始。
        • 調用?rowColor?函數,更新表格的顏色。
      3. 顏色函數?rowColor

        • 獲取表體中的所有行?trNum
        • 遍歷這些行,根據行的索引奇偶性設置不同的背景顏色,奇數行為紅色,偶數行為白色。
      4. 刪除函數

        • 為表體添加點擊事件監聽器。
        • 當點擊的元素文本為 “刪除” 時,刪除對應的行。
        • 調用?rowColor?和?numOrder?函數,更新表格的顏色和序號。

      本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
      如若轉載,請注明出處:http://www.pswp.cn/web/75033.shtml
      繁體地址,請注明出處:http://hk.pswp.cn/web/75033.shtml
      英文地址,請注明出處:http://en.pswp.cn/web/75033.shtml

      如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

      相關文章

      使用文本翻譯API打破語言障礙

      一、引言 在當今全球化的商業環境中&#xff0c;企業面臨著前所未有的語言挑戰。無論是出口商品、引進技術&#xff0c;還是與國際客戶進行交流&#xff0c;語言障礙始終是一個亟待解決的問題。文本翻譯API作為一款高效、穩定的工具&#xff0c;支持多種語言的翻譯&#xff0c…

      【unity游戲開發入門到精通——動畫篇】Animator2D序列幀動畫

      考慮到每個人基礎可能不一樣&#xff0c;且并不是所有人都有同時做2D、3D開發的需求&#xff0c;所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要講解C#的基礎語法&#xff0c;包括變量、數據類型、運算符、…

      深入解析 Jenkins Agent 的 .jnlp 啟動文件

      &#x1f9e9; 深入解析 Jenkins Agent 的 .jnlp 啟動文件 在 Jenkins 中&#xff0c;通過 JNLP&#xff08;Java Network Launch Protocol&#xff09;方式連接 Agent 是一種常見且靈活的方式。你可能曾見過類似這樣的命令&#xff1a; java -jar agent.jar -jnlpUrl file:/…

      定積分__

      practice makes perfect 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 若被積函數在積分區間上是可積的&#xff0c;那么變限積分函數在這個區…

      Three.js 系列專題 7:性能優化與最佳實踐

      內容概述 隨著 3D 場景復雜度的增加,性能優化變得至關重要。Three.js 項目可能因幾何體數量、紋理大小或渲染設置而變慢。本專題將介紹減少 draw call、優化紋理和使用調試工具的最佳實踐。 學習目標 學會減少 draw call 和幾何體復雜度。掌握紋理壓縮與內存管理。使用 Stat…

      CentOS 7安裝Python3.12

      文章目錄 使用pyenv安裝python3.12一、gitub下載pyenv二、升級GCC三.升級openssl這樣python3.12.9就完成安裝在CentOS上啦&#xff01; 使用pyenv安裝python3.12 一、gitub下載pyenv https://github.com/pyenv/pyenv 按照README&#xff0c;pyenv教程安裝即可 二、升級GCC 安…

      【C++】優先級隊列+反向迭代器

      priority_queue的介紹 通常用堆來實現&#xff0c;能在O(log n)的時間復雜度內插入和提取最高&#xff08;或最低&#xff09;優先級的元素。 優先隊列是一種容器適配器&#xff0c;根據嚴格的弱排序標準&#xff0c;它的第一個元素總是它所包含的元素中最大的(默認情況)。此…

      mysql鏡像創建docker容器,及其可能遇到的問題

      前提&#xff0c;已經弄好基本的docker服務了。 一、基本流程 1、目錄準備 我自己的資料喜歡放在 /data 目錄下&#xff0c;所以老規矩&#xff1a; 先進入 /data 目錄&#xff1a; cd /data 創建 mysql 目錄&#xff1a; mkdir mysql 2、鏡像查找 docker search hub.ra…

      快速記憶法,提高知識點背誦效率

      戰國七雄&#xff1a;齊秦 韓趙魏 燕楚 諧音記憶&#xff1a;齊秦 喊趙薇 演出 五等爵位&#xff1a;公侯 伯子 男 記憶方法&#xff1a;公猴 脖子 藍 安卓應用&#xff1a;記憶宮殿APP 記憶 腦力訓練&#xff0c;中小學各學科知識點速記&#xff0c;單詞趣味記憶&#xff0c…

      從零開始學java--泛型(1)

      泛型 學生成績可能是數字類型&#xff0c;也可能是字符串類型&#xff0c;如何存放可能出現的兩種類型呢&#xff1a; public class Score {String name;String id;Object value; //因為Object是所有類型的父類&#xff0c;因此既可以存放Integer也能存放Stringpublic Score…

      pdf轉latex

      Doc2X&#xff08;https://doc2x.noedgeai.com/&#xff09; Doc2X 是一個由 NoEdgeAI 提供的在線工具&#xff0c;主要用于將 PDF 文件&#xff08;尤其是學術論文、報告等文檔&#xff09;轉換為 LaTeX 格式。LaTeX 是一種高質量排版系統&#xff0c;廣泛應用于學術界和出版…

      Visual Studio 2022 UI機器學習訓練模塊

      VS你還是太超標了&#xff0c;現在機器學習都不用寫代碼了嗎&#xff01;&#xff01; 右鍵項目解決方案&#xff0c;選擇機器學習模型

      無公網實體服務器加裝多個操作系統供多個用戶互不打擾使用_part1

      背景介紹 因筆者業務需求&#xff0c;入手了一個實體服務器&#xff0c;但為了避免出現在一個操作系統中搭建編程環境后有許多相關的進程和服務&#xff0c;拖慢日常的使用&#xff0c;也能讓其他人短期使用&#xff0c;更好的利用服務器的性能&#xff0c;讓服務器專注于“什…

      運動規劃實戰案例 | 基于四叉樹分解的路徑規劃(附ROS C++/Python仿真)

      目錄 1 為什么需要四叉樹&#xff1f;2 基于四叉樹的路徑規劃2.1 分層抽象2.2 路圖搜索2.3 動態剪枝 3 算法仿真3.1 ROS C算法仿真3.2 Python算法仿真 1 為什么需要四叉樹&#xff1f; 路徑規劃的本質是在給定環境中尋找從起點到終點的最優或可行路徑&#xff0c;其核心挑戰在…

      docker快捷打包腳本(ai版)

      直接進入主題&#xff1a; 用這個腳本前提是你本地可以拉鏡像倉庫的鏡像&#xff0c;并且在 本地有了&#xff0c;然后將所有的鏡像tag寫在一個文件中&#xff0c;和下面docker_tags.txt 對應&#xff0c;文件叫什么&#xff0c;腳本里對應改什么&#xff0c;給小白說的 #!/bi…

      WinMerge下載及使用教程(附安裝包)

      文章目錄 一、WinMerge安裝步驟1.WinMerge下載&#xff1a;2.解壓&#xff1a;3.啟動&#xff1a; 二、WinMerge使用步驟1.添加文件或文件夾2.查看差異3.格式選擇 WinMerge v2.16.36 是一款免費開源的文件與文件夾比較、合并工具&#xff0c;能幫您快速找出差異&#xff0c;提高…

      Jmeter性能測試之生成測試報告

      結構 測試計劃 測試計劃是頂級的層級?錄的結構&#xff0c; 那么在這樣的?錄結構中&#xff0c;??可以包含很多線程組 線程組 線程組我們可以簡單的理解為postman測試?具??的collection&#xff0c;那么在整體線程組??&#xff0c;可以添加很多的測試 ?例 簡單控…

      CSS中的inline-flex與flex的區別

      在CSS中&#xff0c;flex 和 inline-flex 都是用于實現彈性布局&#xff08;Flexbox&#xff09;的顯示屬性&#xff0c;但它們在布局行為上有所不同。 flex 屬性會使元素表現為塊級彈性容器&#xff0c;這意味著元素會在頁面上占據一整行的空間&#xff0c;無論其內部內容的大…

      Linux的那些基礎常用命令匯總

      目錄 前言&#xff1a; 用戶命令&#xff1a; 管理后臺作業命令&#xff1a; 文件目錄操作命令&#xff1a; 運維高頻使用命令&#xff1a; 磁盤管理以及文件系統命令: 用戶、組操作命令&#xff1a; 權限控制命令&#xff1a; 網絡配置命令&#xff1a; 軟件管理命令…

      高效深度學習lecture03

      lecture_03 **剪枝&#xff1a;**pruning basically turns a dense neural network into a sparse neural network. you can remove those redundant synapses, and also you can remove those redundant neurons. 剪枝的本質上是將稠密的神經網絡轉變成稀疏的神經網絡&#…