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 相关文章推荐
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
一些实用的jQuery代码片段收集
Jul 12 Javascript
javascript学习笔记(三) String 字符串类型介绍
Jun 19 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
Dec 18 Javascript
jQuery获取样式中颜色值的方法
Jan 29 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
Selenium执行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文件怎么打开 如何执行php文件
2011/12/21 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
javascript简单实现命名空间效果
2014/03/06 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
Bootstrap输入框组件使用详解
2017/06/09 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
如何查看python关键字
2021/01/17 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
应聘编辑职位自荐信范文
2014/01/05 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
违纪检讨书范文
2015/01/27 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
技术入股合作协议书
2016/03/21 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Redis全局ID生成器的实现
2022/06/05 Redis