<html>
<head>
<title>dom</title>
<script type="text/javascript">
function generateCompareTRs(iCol)
{
return function compare(tr1, tr2)
{
var v1 = tr1.cells[iCol].firstChild.nodeValue;
var v2 = tr2.cells[iCol].firstChild.nodeValue;
// 序号列,降序
if(iCol == 0)
{
if(parseInt(v1) > parseInt(v2))
{return -1;}
else if(parseInt(v1) < parseInt(v2))
{return 1;}
else
return 0;
}
// 姓名列,升序
else
{
if(v1 > v2)
return 1;
else if(v1 < v2)
return -1;
else
return 0;
}
};
}
function sortTable(iCol)
{
var oTable = document.getElementById("tblSort");
var oTBody = oTable.tBodies[0];
var aRows = oTBody.rows;
var aTRs = new Array;
for(var i = 0; i < aRows.length; i++)
{
aTRs.push(aRows[i]);
}
aTRs.sort(generateCompareTRs(iCol)); var oFragment = document.createDocumentFragment();
for(var i = 0; i < aTRs.length; i++)
{
oFragment.appendChild(aTRs[i]);
}
oTBody.appendChild(oFragment);
}
</script>
</head>
<body>
<input type="button" value="按序号降序排序" onclick="sortTable(0)" /><p/>
<input type="button" value="按姓名升序排序" onclick="sortTable(1)"/><p/>
<table border = "1" id = "tblSort">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>王明</td>
</tr>
<tr>
<td>12</td>
<td>超人</td>
</tr>
<tr>
<td>3</td>
<td>张三</td>
</tr>
<tr>
<td>4</td>
<td>李四</td>
</tr>
</tbody>
</table>
</body>
</html>
解释下上述代码的js
1。return function compare(tr1, tr2) tr1 tr2是什么参数 从哪传的?
2。姓名列,升序 按什么规则判断姓名的大小 ?
<head>
<title>dom</title>
<script type="text/javascript">
function generateCompareTRs(iCol)
{
return function compare(tr1, tr2)
{
var v1 = tr1.cells[iCol].firstChild.nodeValue;
var v2 = tr2.cells[iCol].firstChild.nodeValue;
// 序号列,降序
if(iCol == 0)
{
if(parseInt(v1) > parseInt(v2))
{return -1;}
else if(parseInt(v1) < parseInt(v2))
{return 1;}
else
return 0;
}
// 姓名列,升序
else
{
if(v1 > v2)
return 1;
else if(v1 < v2)
return -1;
else
return 0;
}
};
}
function sortTable(iCol)
{
var oTable = document.getElementById("tblSort");
var oTBody = oTable.tBodies[0];
var aRows = oTBody.rows;
var aTRs = new Array;
for(var i = 0; i < aRows.length; i++)
{
aTRs.push(aRows[i]);
}
aTRs.sort(generateCompareTRs(iCol)); var oFragment = document.createDocumentFragment();
for(var i = 0; i < aTRs.length; i++)
{
oFragment.appendChild(aTRs[i]);
}
oTBody.appendChild(oFragment);
}
</script>
</head>
<body>
<input type="button" value="按序号降序排序" onclick="sortTable(0)" /><p/>
<input type="button" value="按姓名升序排序" onclick="sortTable(1)"/><p/>
<table border = "1" id = "tblSort">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>王明</td>
</tr>
<tr>
<td>12</td>
<td>超人</td>
</tr>
<tr>
<td>3</td>
<td>张三</td>
</tr>
<tr>
<td>4</td>
<td>李四</td>
</tr>
</tbody>
</table>
</body>
</html>
解释下上述代码的js
1。return function compare(tr1, tr2) tr1 tr2是什么参数 从哪传的?
2。姓名列,升序 按什么规则判断姓名的大小 ?
解决方案 »
- 复杂的正则处理
- 页面中JS冲突请教高手如何解决
- 一个大公司很有难度的面试题
- 推荐《JavaScript开发王》,可以在这里看到相关的下载(PDF格式)。。。
- 紧急求助:showModalDialog的问题!!!在线等
- 如何写一个javascript方法调用一个js文件
- 简单问题:js中动态字符串替换如何写?
- 请问怎样去掉<select>的下拉按钮?以及怎样对齐下拉按钮和下拉框的右边界
- 在.net的web页面中,如何将前台javascript函数中的值传到后台??
- 在onclick语句中,我想打开的链接是从另一个窗口打开的,怎么办?
- 求高手帮我合并一下右下角广告代码让它可以跨窗口
- parent.***为空或不是对象
sort()方法排序时 是拿数组的两个元素进行比对的
这两个数组项就是参数
姓名的升序降序 应该是按照字符的ascll码来排序的
tr1,tr2是表格的行元素,只需要传递row即可
至于姓名排序,是将姓名转换成parseInt(v1)
可以考虑用拼音首字母排序