js實(shí)現(xiàn)添加刪除表格操作
本文實(shí)例為大家分享了js實(shí)現(xiàn)添加刪除表格的具體代碼,供大家參考,具體內(nèi)容如下
效果:
1、點(diǎn)擊添加按鈕 往table中添加一行 將全選前面的復(fù)選框變成false
1.1.當(dāng)前新增的復(fù)選框加上點(diǎn)擊事件
2、點(diǎn)擊刪除按鈕 獲取表格體中被選中的行, 刪除整個tr, 將全選前面的復(fù)選框變成false
獲取的是第一個td中的checkbox的狀態(tài) checked為true 2層父子
3 、點(diǎn)擊全選按鈕前面的復(fù)選框 如果被選中 下面的每一個復(fù)選框都被選中 如果不被選中 下面的每一個復(fù)選框都不被選中
4、點(diǎn)擊每一個表格體中的復(fù)選框, 如果所有的復(fù)選框都被選中, 全選按鈕就是被選中, 如果有一個沒有被選中, 全選按鈕就是不選中狀態(tài)
css:
<style> .head { width: 500px; padding: 8px; margin: 20px auto; box-sizing: border-box; border: 1px solid #eee; } input { margin-left: 3px; outline: none; } button { float: right; } table { width: 500px; border: 1px solid #000; margin: 0 auto; border-collapse: collapse; } tr, td, th { border: 1px solid #000; } tr td:nth-child(1) { text-align: center; } .foot { width: 500px; margin: 8px auto; padding: 8px; box-sizing: border-box; } .foot button { float: right; } td:nth-child(2), td:nth-child(3), td:nth-child(4) { width: 20%; } </style>
html:
<div class="head"> <span>請輸入姓名 :</span><input type="text"><br> <span>請輸入性別 :</span><input type="radio" name="sex" checked>男<input type="radio" name="sex">女<br> <span>請輸入年齡 :</span><input type="text"><button>添加到表格</button> </div> <table> <thead> <th><input type="checkbox"> 全選</th> <th>姓名</th> <th>性別</th> <th>年齡</th> </thead> <tbody> <tr class="tr1"> <td><input type="checkbox"></td> <td>張三</td> <td>女</td> <td>88</td> </tr> <tr> <td><input type="checkbox"></td> <td>李四</td> <td>男</td> <td>18</td> </tr> <tr> <td><input type="checkbox"></td> <td>王五</td> <td>女</td> <td>12</td> </tr> </tbody> </table> <div class="foot"><button>刪除所選行</button></div>
javascript:
// 事件三部曲 // 1. 獲取元素 按鈕 table tBody 復(fù)選框 inp var btns = document.querySelectorAll('button'); var table = document.querySelector('table'); var inps = document.querySelectorAll('input'); var all = table.tHead.querySelector('input'); var cks = table.tBodies[0].getElementsByTagName('input'); var cks1 = table.tBodies[0].querySelectorAll('input'); // console.log(btns, table, inps, cks); // console.log(cks, all); console.log(cks, cks1); // 2. 點(diǎn)擊添加按鈕 btns[0].onclick = function(){ // 3. 往table中添加一行 var tr = document.createElement('tr'); // 4. tr加到tbody table.tBodies[0].appendChild(tr); // 5. 創(chuàng)建td var inp = document.createElement('td'); inp.innerHTML = '<input type="checkbox">'; tr.appendChild(inp); var user = document.createElement('td'); user.innerHTML = inps[0].value; tr.appendChild(user); var sex = document.createElement('td'); sex.innerHTML = inps[1].checked ? '男' : '女'; tr.appendChild(sex); var age = document.createElement('td'); age.innerHTML = inps[3].value; tr.appendChild(age); // 6. 全選前面的復(fù)選框變成false all.checked = false; // 當(dāng)前新增的復(fù)選框加上點(diǎn)擊事件 var bck = tr.querySelector('input'); console.log(bck); bck.onclick = function(){ auto(); } } // 7. 點(diǎn)擊刪除按鈕 刪除所選中的行 btns[1].onclick = function(){ // 8. 獲取表格體中被選中的行 // console.log(cks, cks1); // 9. 判斷復(fù)選框是否被選中 for(var i = 0; i < cks.length; i++){ console.log(cks); if(cks[i].checked){ // console.log(cks[i].parentNode.parentNode); // console.log(cks); // 10. 刪除整行 cks[i].parentNode.parentNode.remove(); i--; } } // 11. 將全選前面的復(fù)選框變成false all.checked = false; } // 點(diǎn)擊全選按鈕前面的復(fù)選框 如果被選中 下面的每一個復(fù)選框都被選中 如果不被選中 下面的每一個復(fù)選框都不被選中 // 12. 點(diǎn)擊all all.onclick = function(){ console.log(all.checked); // 13. 每一個 for(var i = 0; i < cks.length;i++){ cks[i].checked = all.checked; } } // 點(diǎn)擊每一個表格體中的復(fù)選框, 如果所有的復(fù)選框都被選中, 全選按鈕就是被選中, 如果有一個沒有被選中, 全選按鈕就是不選中狀態(tài) for(var j = 0; j < cks.length; j++){ // 點(diǎn)擊 cks[j].onclick = function(){ // 所有的 // for(var i = 0; i < cks.length; i++){ // console.log(cks[i].checked); // // 如果有一個沒有被選中, 全選按鈕就是不選中狀態(tài) // if(cks[i].checked == false){ // // 全選按鈕就是不選中 // all.checked = false; // // 結(jié)束整個函數(shù) // return; // } // } // // 所有的都被選中 // all.checked = true; auto(); } } function auto() { // 所有的 for(var i = 0; i < cks.length; i++){ console.log(cks[i].checked); // 如果有一個沒有被選中, 全選按鈕就是不選中狀態(tài) if(cks[i].checked == false){ // 全選按鈕就是不選中 all.checked = false; // 結(jié)束整個函數(shù) return; } } // 所有的都被選中 all.checked = true; }
效果:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js動態(tài)實(shí)現(xiàn)表格添加和刪除操作
- angularJs 表格添加刪除修改查詢方法
- js動態(tài)添加表格逐行添加、刪除、遍歷取值的實(shí)例代碼
- 基于JavaScript實(shí)現(xiàn)動態(tài)添加刪除表格的行
- 原生JS和JQuery動態(tài)添加、刪除表格行的方法
- js簡單的表格添加行和刪除行操作示例
- 動態(tài)添加刪除表格行的js實(shí)現(xiàn)代碼
- JS小功能(操作Table--動態(tài)添加刪除表格及數(shù)據(jù))實(shí)現(xiàn)代碼
- JavaScript動態(tài)操作表格實(shí)例(添加,刪除行,列及單元格)
- js實(shí)現(xiàn)動態(tài)添加、刪除行、onkeyup表格求和示例
相關(guān)文章
Firefox+FireBug使JQuery的學(xué)習(xí)更加輕松愉快
FireBug是FireFox下最強(qiáng)大的調(diào)試插件.利用它,可以讓JQuery的學(xué)習(xí)過程更加輕松愉快.2010-01-01javascript實(shí)現(xiàn)點(diǎn)擊圖片切換功能
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)點(diǎn)擊圖片切換功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07Js 隨機(jī)數(shù)產(chǎn)生6位數(shù)字
Js隨機(jī)產(chǎn)生6為數(shù)字的代碼,需要的朋友可以參考下。2010-05-05JS簡單限制textarea內(nèi)輸入字符數(shù)量的方法
這篇文章主要介紹了JS簡單限制textarea內(nèi)輸入字符數(shù)量的方法,涉及JavaScript響應(yīng)鼠標(biāo)及鍵盤事件處理textarea輸入框字符的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10JSON字符串和對象相互轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了JSON字符串和對象相互轉(zhuǎn)換的方法,結(jié)合實(shí)例形式分析了json格式數(shù)據(jù)的轉(zhuǎn)換方法,涉及javascript正則與字符串操作的相關(guān)技巧,需要的朋友可以參考下2016-06-06一起盤點(diǎn)JavaScript中一些強(qiáng)大的運(yùn)算符
javascript中的運(yùn)算符大多由標(biāo)點(diǎn)符號表示,少數(shù)由關(guān)鍵字表示,它們的語法言簡意賅,它們的數(shù)量卻著實(shí)不少,下面這篇文章主要給大家介紹了關(guān)于JavaScript中一些強(qiáng)大的運(yùn)算符的相關(guān)資料,需要的朋友可以參考下2021-11-11bootstrap table插件的分頁與checkbox使用詳解
這篇文章主要為大家詳細(xì)介紹了bootstrap table插件的分頁與checkbox使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07JS使用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)的tab選項(xiàng)卡效果示例
這篇文章主要介紹了JS使用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)的tab選項(xiàng)卡效果,結(jié)合具體實(shí)例形式分析了js面向?qū)ο蠹夹g(shù)與tab選項(xiàng)卡功能的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02