<html>
<head>
<title>Table Sort Example</title>
<script type="text/javascript">
window.onload = function(){
var oTable = document.getElementById("tblSort");
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
for(i = 0; i < colDataRows.length; i++){
colDataRows[i].lastChild.innerHTML = "0";
}
var inputv = document.getElementsByTagName("input");
for(i = 0; i < inputv.length; i++){
inputv[i].value = 0;
inputv[i].onchange = function(){
var trnode = this.parentNode.parentNode;
add1 = trnode.childNodes[2].firstChild.value;
add2 = trnode.childNodes[3].firstChild.value;
add3 = trnode.childNodes[5].innerHTML;
trnode.childNodes[4].innerHTML = parseFloat(add1) + parseFloat(add2);
trnode.childNodes[6].innerHTML = parseFloat(add1) + parseFloat(add2) + parseFloat(add3);
sortTable('tblSort', 6, 'float');
}
}
}
//转换器,将列的字段类型转换为可以排序的类型:String,int,float
function convert(sValue, sDataType) {
switch(sDataType) {
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString();
}
}
//排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型
function generateCompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) {
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if (vValue1 > vValue2) {
return -1;
} else if (vValue1 < vValue2) {
return 1;
} else {
return 0;
}
};
}
//排序方法
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
//将所有列放入数组
for (var i=0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
}
//判断最后一次排序的列是否与现在要进行排序的列相同,是的话,直接使用reverse()逆序
//使用数组的sort方法,传进排序函数
aTRs.sort(generateCompareTRs(iCol, sDataType));
var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++) {
aTRs[i].firstChild.innerHTML = i + 1;
oFragment.appendChild(aTRs[i]);
}
oTBody.appendChild(oFragment);
//记录最后一次排序的列索引
oTable.sortCol = iCol;
}
</script>
</head>
<body>
<p>Click on the table header to sort in ascending order.</p>
<table border="1" id="tblSort">
<thead>
<tr align="center">
<td width="60"> 序号</td>
<td width="168">人名</td>
<td width="168">输入a</td>
<td width="168">输入b</td>
<td width="100">a+b</td>
<td width="80">c</td>
<td width="184">a + b + c</td>
</tr>
</thead>
<tbody>
<tr>
<td> 1</td>
<td> 张三</td>
<td><input type="text" name="textfield" id="a1" ></td>
<td><input type="text" name="textfield" id="b1"></td>
<td> </td>
<td>10</td>
<td> </td>
</tr>
<tr>
<td> 2</td>
<td> 李四</td>
<td><input type="text" name="textfield" id="a2" ></td>
<td><input type="text" name="textfield" id="b2"></td>
<td> </td>
<td>19</td>
<td> </td>
</tr>
<tr>
<td> 3</td>
<td> 王五</td>
<td><input type="text" name="textfield" id="a3" ></td>
<td><input type="text" name="textfield" id="b3"></td>
<td> </td>
<td>12</td>
<td> </td>
</tr>
<tr>
<td> 4</td>
<td> 周六</td>
<td><input type="text" name="textfield" id="a4" ></td>
<td><input type="text" name="textfield" id="b4"></td>
<td> </td>
<td>30</td>
<td> </td>
</tr>
<tr>
<td> 5</td>
<td> 韩老三</td>
<td><input type="text" name="textfield" id="a5" ></td>
<td><input type="text" name="textfield" id="b5"></td>
<td> </td>
<td>5</td>
<td> </td>
</tr>
<tr>
<td> 6</td>
<td> 聂红红</td>
<td><input type="text" name="textfield" id="a1" ></td>
<td><input type="text" name="textfield" id="b1"></td>
<td> </td>
<td>24</td>
<td> </td>
</tr>
</tbody>
</table>
</body>
</html>
分享到:
相关推荐
11. **jQuery库**:虽然现在许多现代框架已取代jQuery,但它依然是学习JavaScript的一个经典入口,jQuery简化了DOM操作、事件处理和动画效果。 12. **性能优化**:了解如何避免内存泄漏、减少DOM操作、优化循环等,...
通过《JavaScript应用程序经典实例》的学习,读者不仅可以掌握JavaScript的基础知识,还能了解到实际项目中的应用技巧,提升编写高效、可维护的JavaScript代码的能力。这本书可能包含多个章节,每个章节都围绕一个...
8. **Node.js**:Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使JavaScript可以在服务器端运行,用于构建高性能的网络应用,如实时聊天、流媒体服务器等。 9. **前端框架和库**:现代Web开发中,...
本资源“100个微信小程序实例”包含了一系列真实的微信小程序项目,是学习和掌握微信小程序开发的宝贵资料。 这些实例覆盖了各种应用场景,包括但不限于电商、社交、生活服务、工具、游戏等类别。通过学习这些实例...
在这个“微信小程序项目实例——体质计算器”中,开发者构建了一个专注于健康领域的应用,帮助用户计算体质指数(BMI),评估其健康状况,并提供相关健康建议。 体质计算器的核心功能是根据用户的身高和体重计算BMI...
在本实例集中,我们将会深入探讨450个JavaScript小程序,这些实例覆盖了JavaScript的基础语法、DOM操作、事件处理、AJAX请求、函数编程、对象操作以及更高级的主题。 1. **基础语法**:JavaScript的基础包括变量...
微信基础实例源码,演示一个小程序如何编写及运行,在微信小程序中,可自由的组织代码结构,并不一定限制于官方Demo提供的`pages`路径。在本Demo中,将从0开始到创建页面,演示一个小页面是如何跑起来的。就以这个小...
在这个实例中,"douban"可能是小程序的一个功能模块或者示例,比如实现了豆瓣电影信息的查询功能。通过分析这个模块的代码,我们可以学习如何从第三方API获取数据,并在小程序中展示。 总之,微信小程序实例结合PHP...
8. **Node.js**:JavaScript也可以用于服务器端开发,Node.js是一个开放源代码、跨平台的JavaScript运行环境,允许开发者使用JavaScript编写服务器程序。 9. **JavaScript性能优化**:包括代码优化技巧、内存管理、...
1. Win32应用程序:基于传统的Win32 API,使用C或C++编写,直接操作窗口、消息队列和线程。 2. .NET Framework应用程序:使用C#、VB.NET等语言,利用.NET Framework库,提供更高级别的抽象和跨平台能力。 3. UWP...
微信小程序是一种轻量级的...每个实例都代表了一种特定的功能或应用场景,通过研究和模仿,你能够更深入地理解微信小程序的工作原理和最佳实践。同时,这个资源也适合初学者作为学习资料,通过实际操作来巩固理论知识。
7. **闭包**:闭包是JavaScript中一个高级特性,允许函数访问和操作其外部作用域的变量,即使在其外部作用域已经结束之后。 8. **定时器和延迟操作**:setTimeout和setInterval用于在特定时间后执行函数,理解它们...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
JavaScript,作为一种广泛应用于Web开发的脚本语言,已经成为前端...每个实例都是一个小型的解决方案,可以单独使用,也可以作为构建更大项目的基础。通过不断练习和学习,你可以更好地驾驭JavaScript这门强大的语言。
总结:整个实例展示了一个微信小程序发送短信验证码的完整流程,从设计到实现。其中涉及到小程序的前端开发、后端逻辑处理,以及第三方服务的调用。还特别强调了用户体验的设计,例如倒计时功能的实现,这不仅增强了...
**JS使用AJAX实例** AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在JavaScript中,我们通常使用`XMLHttpRequest`对象或者jQuery库来实现AJAX请求。 1...
微信小程序表单弹窗实例是一个能够展示给开发者如何在微信小程序中实现表单提交和处理数据弹窗的实用教程。它详细地介绍了如何使用微信小程序的WXML和JS代码编写,以及如何通过动画效果改善用户体验。接下来,我将...