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当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
JS实现动态给图片添加边框的方法
Apr 01 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
全屏js头像上传插件源码高清版
Mar 29 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
微信小程序实现单选选项卡切换效果
Jun 19 Javascript
微信小程序图片左右摆动效果详解
Jul 13 Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 Javascript
JS中FileReader类实现文件上传及时预览功能
Mar 27 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做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
PHP入门
2006/10/09 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
2018/01/08 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
js实现弹框效果
2021/03/24 Javascript
见习期自我鉴定
2013/11/07 职场文书
上课玩手机检讨书
2014/02/08 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
欢迎标语大全
2014/06/21 职场文书
党支部特色活动方案
2014/08/20 职场文书
招标承诺书
2014/08/30 职场文书
新学期开学寄语2016
2015/12/04 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA