<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。姓名列,升序 按什么规则判断姓名的大小 ?
解决方案 »
- 这段代码有些地方看不懂,请教一下
- jqury ready 问题
- [请教] js中,通过open.window调用,打开多层子窗口,如何获得最外层的窗口?
- 请教碁础概念,history对象的length属性,表示最近访问过的页面个数,"最近访问过"是一个什么概念,如何界定?
- 我用某个js控件,好像只能用某个字符编码,否则就提示找不到对象。
- return this.replace(/(^\s*)|(\s*$)/g, "")正则里面的符号是什么意思呢?
- js控制框架
- 标签div中的内容如何动态改变
- 有没有javascript的语法之类的文档,发给我一份,我急用啊,帮忙了各位
- 新手救助 这个JS拉倒最右边后始终回回弹到开始无法解决的bug
- 求高手帮我合并一下右下角广告代码让它可以跨窗口
- parent.***为空或不是对象
sort()方法排序时 是拿数组的两个元素进行比对的
这两个数组项就是参数
姓名的升序降序 应该是按照字符的ascll码来排序的
tr1,tr2是表格的行元素,只需要传递row即可
至于姓名排序,是将姓名转换成parseInt(v1)
可以考虑用拼音首字母排序