javascript 实现简单的table排序及table操作练习


Posted in Javascript onDecember 28, 2012

在这个列子中,练习了table的操作,主要有:tBodies、rows、cells,还有有关数组的排序方法:sort
先上代码:

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>table排序</title> 
</head> 
<body> 
<table id="tableTest" width="400" border="1"> 
<tbody> 
<tr> 
<td>2</td> 
<td>bbb</td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td>5</td> 
<td>eee</td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td>3</td> 
<td>ccc</td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td>4</td> 
<td>ddd</td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td>1</td> 
<td>aaa</td> 
<td> </td> 
<td> </td> 
</tr> 
</tbody> 
</table> 
<input type="button" id="sort" value="表格排序" /> 
<script> 
window.onload = function () { 
var oTable = document.getElementById('tableTest'); 
var oTbody = oTable.tBodies[0]; 
var oBtn = document.getElementById('sort'); 
var arr = [];//用来存放每一个tr 
var isAsc = true;//用来判断升序,还是降序 
oBtn.onclick = function () { 
for (var i = 0; i < oTbody.rows.length; i++ ) { 
arr[i] = oTbody.rows[i];//这里是把每一个tr存放到一个数组,而不是排序的依据(这里是cells[0].innerHTML) 
} 
//数组根据cells[0].innerHTML来排序 
arr.sort(function (td1, td2){ 
if(isAsc) { 
return parseInt(td1.cells[0].innerHTML) - parseInt(td2.cells[0].innerHTML); 
} else { 
return parseInt(td2.cells[0].innerHTML) - parseInt(td1.cells[0].innerHTML); 
} 
}); 
//把排序后的tr 重新插入tbody 
for(var j =0; j < arr.length; j++ ) { 
oTbody.appendChild(arr[j]); 
} 
//判断升序,降序 
isAsc = !isAsc; 
} 
} 
</script> 
</body> 
</html>

下面??乱恍┫喙氐闹?兜悖
我们都知道,平时操作一般的DOM可以getElementsByTagName、getElementById云云来获取相关节点
在table中当然这种方法也可以实现
显然,这样操作会很麻烦
所以,对于table我们可以用另一套方法、属性来操作:
在这之前,先说一些有关table的东东:
平时写table相信很多人会直接这么写:
<table id="tableTest" width="400" border="1"> 
<tr> 
<td>3</td> 
<td>ccc</td> 
<td> </td> 
<td> </td> 
</tr> 
</table>

如果,你firebug查看一下代码,你会发现会多出一个tbody来,明明源代码是没有的
这是为毛?!
其实,table的真正结构是:table中也包括:thead、tbody、tfoot,其中tbody是可以多个的
回到主题上来:
javascript中有关table元素的属性、方法:
caption:保存着对<caption>元素(如果有)的指针
tBodies:是一个<tbody>元素的HTMLCollection
tFoot:保存着对<tfoot>元素(如果有)的指针
tHead:保存着对<thead>元素(如果有)的指针
rows:是一个表格中所有行的HTMLCollection
createTHead():创建<thead>元素,将其放到表格中,并返回引用
createTFoot():创建<tfoot>元素,将其放到表格中,并返回引用
createCaption():创建<caption>元素,将其放到表格中,并返回引用
deleteTHead():删除<thead>元素
deleteTFoot():删除<tfoot>元素
deleteCaption():删除<caption>元素
deleteRow(pos):删除指定位置行
insertRow(pos):向rows集合中指定位置插入一个行
有关tbody的属性、方法
rows:保存着tbody所有行的HTMLCollection
deleteRow(pos):删除指定位置的行
insertRow(pos):向rows的集合中的指定位置插入一行,并返回对新插入行的引用
有关tr的属性、方法
cells:保存着tr所有td(单元格)的HTMLCollection
deleteCell(pos):删除指定位置的单元格
insetCell(pos):向cells的集合中的指定位置插入一个单元格,并返回对该单元格的引用
OK,就说这些………………
Javascript 相关文章推荐
用javascript getComputedStyle获取和设置style的原理
Oct 10 Javascript
帮助避免错误的Javascript陷阱清单
May 31 Javascript
jquery pagination插件实现无刷新分页代码
Oct 13 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
浅谈关于JavaScript API设计的一些建议和准则
Jun 24 Javascript
简单实现Bootstrap标签页
Aug 09 Javascript
详解AngularJS跨页面传值(ui-router)
Aug 23 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 #Javascript
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 #Javascript
JS声明变量背后的编译原理剖析
Dec 28 #Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 #Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 #Javascript
web性能优化之javascript性能调优
Dec 28 #Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
Dec 28 #Javascript
You might like
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
python线程池threadpool实现篇
2018/04/27 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python使用递归的方式建立二叉树
2019/07/03 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
《燕子专列》教学反思
2014/02/21 职场文书
清扬洗发水广告词
2014/03/14 职场文书
借款担保书范文
2014/05/13 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript