原生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 相关文章推荐
仿迅雷焦点广告效果(JQuery版)
Nov 19 Javascript
JavaScript入门教程(10) 认识其他对象
Jan 31 Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
从零开始学习jQuery (二) 万能的选择器
Oct 01 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
JavaScript 截取字符串代码实例
Sep 05 Javascript
Vue中component标签解决项目组件化操作
Sep 04 Javascript
js实现删除json中指定的元素
Sep 22 Javascript
如何实现小程序与小程序之间的跳转
Nov 04 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通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
高中自我评价分享
2013/12/05 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
优秀广告词大全
2014/03/19 职场文书
开工仪式主持词
2014/03/20 职场文书
音乐幼师求职信
2014/07/09 职场文书
三八活动策划方案
2014/08/17 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Oracle用户管理及赋权
2022/04/24 Oracle