原生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 相关文章推荐
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
js中的this关键字详解
Sep 25 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 Javascript
防止页面url缓存中ajax中post请求的处理方法
Oct 10 Javascript
如何让你的JS代码更好看易读
Dec 01 Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
基于javascript实现移动端轮播图效果
Dec 21 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
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
Python对数据库操作
2016/03/28 Python
python基础教程之Filter使用方法
2017/01/17 Python
浅谈Python中的私有变量
2018/02/28 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python爬取微博评论的实例讲解
2021/01/15 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
自我鉴定怎么写
2013/12/05 职场文书
心理学专业求职信
2014/06/16 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
2015年三万活动总结
2015/03/25 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Ajax异步刷新功能及简单案例
2021/11/20 Javascript