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 相关文章推荐
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
一段利用WSH修改和查看IP配置的代码
May 11 Javascript
修复ie8&amp;chrome下window的resize事件多次执行
Oct 20 Javascript
JS实现点击按钮后框架内载入不同网页的方法
May 05 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
jQuery实现的自动加载页面功能示例
Sep 04 Javascript
vue-loader教程介绍
Jun 14 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 Javascript
JS数组reduce()方法原理及使用技巧解析
Jul 14 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 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python中urllib模块用法实例详解
2014/11/19 Python
基于Python函数和变量名解析
2019/07/19 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
医学生临床实习自我评价
2014/03/07 职场文书
员工教育培训协议书
2014/09/27 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
武侯祠导游词
2015/02/04 职场文书
2015年教师节活动总结
2015/03/20 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
小学班级管理心得体会
2016/01/07 职场文书