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 相关文章推荐
php的文件上传入门教程(实例讲解)
Apr 10 Javascript
原生js实现日期联动
Jan 12 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
vue中axios处理http发送请求的示例(Post和get)
Oct 13 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
实例分析javascript中的异步
Jun 02 Javascript
原生js实现滑块区间组件
Jan 20 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
Ajax PHP分页演示
2007/01/02 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
javascript各种复制代码收集
2008/09/20 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
Python单元测试框架unittest简明使用实例
2015/04/13 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python实现统计代码行数的小工具
2019/09/19 Python
python实现XML解析的方法解析
2019/11/16 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
Linux机考试题
2015/10/16 面试题
自荐信怎么写呢?
2013/12/09 职场文书
教室布置标语
2014/06/26 职场文书
孩子教育的心得体会
2014/09/01 职场文书
工作总结与自我评价
2014/09/18 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
社区宣传标语口号
2015/12/26 职场文书
《正比例》教学反思
2016/02/23 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL