原生javaScript做得动态表格(注释写的很清楚)


Posted in Javascript onDecember 29, 2013

最近看了3本o'reilly的书,我们一般称为禽兽书(跟我一同学的名字很像大笑),然后一直想做一个列子来练练手,因为看公司好多用动态表格的,所以,我就试着用js做了动态表格,用firfox浏览器来调试的,因为firbug插件用着比较好,本来就是想实现一个很小的功能,没想做那么多,就点击按钮能够增加一行就行了,后来越加越多,也越来越好看了。把源码贴出来,大家共同学习,有问题也可以指正出来,js初学者,忘大神笔下留情。

ps:不知道上面为什么不显示行号,好久没用了。 注释写的很清楚,大家共同学习。

<span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>动态表格</title> 
<style type="text/css"> 
body{ background-color:#9CC; text-align:center} 
table{ margin:10px auto;} 
tr th { border: 1px solid #096;} 
td{border: 1px solid #096;} 
</style> 
<script type="text/javascript"> 
/*在函数的外部只能声明一些变量之类的,不能用操作方法,因为没有函数去调用执行它。*/ //在载入页面的时候就在表格头放入选择框,因为是一次性的 
window.onload = function(){ 
var tab = document.getElementById('tab'); 
var firsttr = document.getElementsByTagName('tr')[0]; 
var childtd = firsttr.childNodes; 
//在第一行第一列上加入选择框 
var inp = document.createElement('input'); 
inp.type = 'checkbox'; 
//DOM Leve 2 事件注册 
catchEvent(inp,'click',function(){ //注册函数 不同状态进行判断 
if(inp.checked ==true){ 
allSelect(); 
}else{ 
cancelSelect(); 
} 
}); 
//catchEvent(inp,'click',allSelect); 
//catchEvent(inp,'change',cancelSelect); 
childtd[0].appendChild(inp); 
} 
//增加一行 
//var count =0;//增加一列用来 计数 
function addRow(){ 
//count++; 
var tab = document.getElementById('tab'); 
var firsttr = document.getElementsByTagName('tr')[0]; 
var childtd = firsttr.childNodes; 
var tr = document.createElement('tr'); 
var arrtd = new Array(); 
var arrinp = new Array(); 
for(var i =0;i<childtd.length;i++){ 
arrtd[i] = document.createElement('td'); 
arrinp[i] = document.createElement('input'); 
if(i==0){ 
arrinp[i].type = 'checkbox'; 
arrinp[i].name = 'selectbox'; 
}else if(i==1){ 
//arrinp[i] = document.createTextNode(count); 
arrinp[i] = document.createTextNode(''); 
} 
arrtd[i].appendChild(arrinp[i]);//思考为什么 input也要加上数组。 
tr.appendChild(arrtd[i]); 
} 
tab.appendChild(tr); 
newSort(); 
} 
//删除操作 
function deleteRow(){ 
var parentTr = new Array();//先把被选中的行放在一个数组上 
var box = document.getElementsByName('selectbox'); 
var tab = document.getElementById('tab'); 
for(var i = 0;i<box.length;i++){ 
if(box[i].checked==true){ 
var parent = box[i].parentNode; 
parentTr[i] = parent.parentNode;//如果直接这种为放在里面为什么不能完全删除??是因为反应不够吗? 
//tab.removeChild(parentTr); 
} 
} 
for(var i = 0;i<parentTr.length;i++){ //这样做才能把选中的全部删除 
if(parentTr[i]){ //这边要先判断一下是否为空值,如果不为空才去移除,否者会报错。 
tab.removeChild(parentTr[i]); 
} 
} 
newSort(); 
} 
//如果执行删除的话则,重新进行排序 
function newSort(){ 
var text = new Array(); 
var child_td = new Array(); 
var arr_tr = document.getElementsByTagName('tr'); 
for(var i = 1;i<arr_tr.length;i++){ 
child_td[i] = arr_tr[i].childNodes[1];//获得从第二行开始所有第二列的节点 
if(child_td[i].childNodes[0]){ 
child_td[i].removeChild(child_td[i].childNodes[0]); 
} 
text[i] = document.createTextNode(i); 
child_td[i].appendChild(text[i]); 
} 
} 
//全选操作 
function allSelect(){ 
var box = document.getElementsByName('selectbox'); 
for(var i= 0;i<box.length;i++){ 
box[i].checked = true; 
} 
} 
//全部取消选择 
function cancelSelect(){ 
var box = document.getElementsByName('selectbox'); 
for(var i = 0;i<box.length;i++){ 
if(box[i].checked == true){ 
box[i].checked =false; 
} 
} 
} 
//事件注册函数 
function catchEvent(eventobj,event,eventHandler){ 
if(eventobj.addEventListener){ 
eventobj.addEventListener(event,eventHandler,false); 
}else if(eventobj.attachEvent){ 
event = 'on'+event; 
eventobj.attachEvent(event,eventHandler); 
} 
} 
//catchEvent(add,'click',addRow); 
</script> 
</head> 
<body> 
<h3>动态表格</h3> 
<input type="button" value="增加" id="add" onclick="addRow()" /> 
<input type="button" value="全部选择" onclick="allSelect()" /> 
<input type="button" value="全部取消" onclick="cancelSelect()" /> 
<input type="button" value="删除" id="delete" onclick="deleteRow()"/> 
<table id="tab" cellpadding="5px" cellspacing="0px"> 
<tr><td></td><td>序号</td><td>题目一</td><td>题目二</td><td>题目三</td></tr> 
</table> 
</body> 
</html></span>
Javascript 相关文章推荐
用 Javascript 验证表单(form)中的单选(radio)值
Sep 08 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
字段太多jquey快速清空表单内容方法
Aug 21 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
详解javascript高级定时器
Dec 31 Javascript
js中获取jsp表单中radio类型的值简单实例
Aug 15 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 #Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
Dec 29 #Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
Dec 29 #Javascript
解决js中window.open弹出的是上次的缓存页面问题
Dec 29 #Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
Dec 29 #Javascript
javascript中不等于的代码是什么怎么写
Dec 29 #Javascript
jquery中的on方法使用介绍
Dec 29 #Javascript
You might like
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
js模拟实现烟花特效
2020/03/10 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
python 判断自定义对象类型
2009/03/21 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python谱减法语音降噪实例
2019/12/18 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
印度网上药店:1mg
2017/10/13 全球购物
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
党支部换届选举方案
2014/05/08 职场文书
反对邪教标语
2014/06/30 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书