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)擊刪除按鈕 獲取表格體中被選中的行, 刪除整個(gè)tr, 將全選前面的復(fù)選框變成false
獲取的是第一個(gè)td中的checkbox的狀態(tài) checked為true 2層父子
3 、點(diǎn)擊全選按鈕前面的復(fù)選框 如果被選中 下面的每一個(gè)復(fù)選框都被選中 如果不被選中 下面的每一個(gè)復(fù)選框都不被選中
4、點(diǎn)擊每一個(gè)表格體中的復(fù)選框, 如果所有的復(fù)選框都被選中, 全選按鈕就是被選中, 如果有一個(gè)沒(méi)有被選中, 全選按鈕就是不選中狀態(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>請(qǐng)輸入姓名 :</span><input type="text"><br>
<span>請(qǐng)輸入性別 :</span><input type="radio" name="sex" checked>男<input type="radio" name="sex">女<br>
<span>請(qǐng)輸入年齡 :</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ù)選框 如果被選中 下面的每一個(gè)復(fù)選框都被選中 如果不被選中 下面的每一個(gè)復(fù)選框都不被選中
// 12. 點(diǎn)擊all
all.onclick = function(){
console.log(all.checked);
// 13. 每一個(gè)
for(var i = 0; i < cks.length;i++){
cks[i].checked = all.checked;
}
}
// 點(diǎn)擊每一個(gè)表格體中的復(fù)選框, 如果所有的復(fù)選框都被選中, 全選按鈕就是被選中, 如果有一個(gè)沒(méi)有被選中, 全選按鈕就是不選中狀態(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);
// // 如果有一個(gè)沒(méi)有被選中, 全選按鈕就是不選中狀態(tài)
// if(cks[i].checked == false){
// // 全選按鈕就是不選中
// all.checked = false;
// // 結(jié)束整個(gè)函數(shù)
// return;
// }
// }
// // 所有的都被選中
// all.checked = true;
auto();
}
}
function auto() {
// 所有的
for(var i = 0; i < cks.length; i++){
console.log(cks[i].checked);
// 如果有一個(gè)沒(méi)有被選中, 全選按鈕就是不選中狀態(tài)
if(cks[i].checked == false){
// 全選按鈕就是不選中
all.checked = false;
// 結(jié)束整個(gè)函數(shù)
return;
}
}
// 所有的都被選中
all.checked = true;
}
效果:



以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js動(dòng)態(tài)實(shí)現(xiàn)表格添加和刪除操作
- angularJs 表格添加刪除修改查詢(xún)方法
- js動(dòng)態(tài)添加表格逐行添加、刪除、遍歷取值的實(shí)例代碼
- 基于JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加刪除表格的行
- 原生JS和JQuery動(dòng)態(tài)添加、刪除表格行的方法
- js簡(jiǎn)單的表格添加行和刪除行操作示例
- 動(dòng)態(tài)添加刪除表格行的js實(shí)現(xiàn)代碼
- JS小功能(操作Table--動(dòng)態(tài)添加刪除表格及數(shù)據(jù))實(shí)現(xiàn)代碼
- JavaScript動(dòng)態(tài)操作表格實(shí)例(添加,刪除行,列及單元格)
- js實(shí)現(xiàn)動(dòng)態(tài)添加、刪除行、onkeyup表格求和示例
相關(guān)文章
Javascript設(shè)計(jì)模式之觀察者模式的多個(gè)實(shí)現(xiàn)版本實(shí)例
這篇文章主要介紹了Javascript設(shè)計(jì)模式之觀察者模式的多個(gè)實(shí)現(xiàn)版本實(shí)例,本文給出3種實(shí)現(xiàn)版本代碼,同時(shí)給出了Jquery實(shí)現(xiàn)版本,需要的朋友可以參考下2015-03-03
javascript運(yùn)動(dòng)框架用法實(shí)例分析(實(shí)現(xiàn)放大與縮小效果)
這篇文章主要介紹了javascript運(yùn)動(dòng)框架用法,結(jié)合實(shí)例形式分析了javascript運(yùn)動(dòng)框架的實(shí)現(xiàn)與使用技巧,可實(shí)現(xiàn)div塊的放大與縮小功能,需要的朋友可以參考下2016-01-01
Javascript函數(shù)式編程簡(jiǎn)單介紹
什么是函數(shù)式編程?根據(jù)百度百科的描述,“函數(shù)式編程是種編程典范,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語(yǔ)言最重要的基礎(chǔ)是 λ 演算(lambda calculus)。而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)?!?/div> 2015-10-10
基于mpvue小程序使用echarts畫(huà)折線圖的方法示例
這篇文章主要介紹了基于mpvue小程序使用echarts畫(huà)折線圖的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
js讀取并解析JSON類(lèi)型數(shù)據(jù)的方法
這篇文章主要介紹了js讀取并解析JSON類(lèi)型數(shù)據(jù)的方法,具體分析了json格式的功能、用途與JS解析技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Ajax驗(yàn)證用戶(hù)名或昵稱(chēng)是否已被注冊(cè)
本文主要介紹了Ajax驗(yàn)證用戶(hù)名或昵稱(chēng)是否已被注冊(cè)的實(shí)例方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04最新評(píng)論

