字符排序的问题 http://www.brainjar.com/dhtml/tablesort/demo.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for (var i = 1; i<sortedData.length; i++) 楼上的方法结果一样.to net_lover(孟子E章):我现在要做这个功能主要是为了插入另一个页面,更改那个页面的table.我不能把那个页面的table给换掉,这个页面只是我测试用的,所以希望你能帮我看看问题出在哪里.谢谢! 算法出错了xjdawu(左右互搏)的方法是正确的,每一轮你都少比较一次。把for (var i = 1; i<sortedData.length-1; i++)改成for (var i = 1; i<sortedData.length; i++)应该是可以的。请楼主自己验证。 楼上的有没有试过执行这个页面?我使用了你的方法一样不对,问题是执行第一遍时(点击key),alert(sortedData)结果是aaaer,aaafv,ebbv,erva点第二次时结果是erva,ebbv,aaafv,aaaer显示的table也相应地排序正确但第三次点击时结果是aaafv,aaaer,ebbv,erva (前两个结果不对)以后都是这样.但我把处理alert(sortedData)后的for循环去掉后,alert显示的结果不会这样,是正确的. 我当然验证过,但是好像没有办法重现你的问题,在我这里是正确的。<html><head><title>table sort test</title></head><script language=javascript>function onSortIconClicked(){ //alert(document.all.sortIcon.src); var direction = ""; if (document.all.sortIcon.src.indexOf( "downArrow.gif") != -1) { document.all.sortIcon.src="upArrow.gif"; direction = "up"; }else { document.all.sortIcon.src="downArrow.gif"; direction = "down"; } var tbl = document.getElementsByTagName("TABLE"); var row = tbl[0].rows; var value = ""; var data = new Array(); for (var i = 1; i< row.length; i++) { value = row[i].cells[0].innerText; data[i-1] = value; } var sortedData = sort(data, direction); alert(sortedData);//<-- 显示排序结果 for (var i = 1; i<row.length; i++) { for (var j = 1; j<row.length; j++) { if (row[j].cells[0].innerText == sortedData[i]) { var newRow = tbl[0].insertRow(); var newCell = newRow.insertCell(); newCell.innerText = row[j].cells[0].innerText; newCell = newRow.insertCell(); newCell.innerText = row[j].cells[1].innerText; tbl[0].deleteRow(j); } } }}function sort(data, direction){ for (var i=1; i<data.length; i++) { for (var j = 0; j<data.length-i; j++) { if (direction == "up") { if (data[j] > data[j+1]) { var temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } if (direction == "down") { if (data[j] < data[j+1]) { var temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } } return data; }</script><body><table width="694" border=1><tr> <td bgcolor="#C0C0C0"><a href="javascript:onSortIconClicked()">key <img id="sortIcon" border="0" src="downArrow.gif" width="9" height="8" ></a></td> <td bgcolor="#C0C0C0">value</td></tr><tr> <td>aaafv</td> <td>vcccf</td></tr><tr> <td>aaaer</td> <td>bbbde</td></tr><tr> <td>erva</td> <td>errt</td></tr><tr> <td>ebbv</td> <td>q345t</td></tr></table></body></html>请楼主试试?? JS里的flot插件画柱状图时,怎么做对比 jQuery密码强度插件passwordStrength的实例演示 jquery colorbox插件如何自适应高度 怎么用jquery的remove()方法删除 <html>节点,谢谢。 这段代码是什么意思 js事件问题? 救命!javascript操作Dom的问题!急!急!急! Listbox,如何加入水平滚动条? 点击按钮转到另一个页(在本页打开),不用表单,需要在url中传值! 正则替换的问题,帮我看看?立即结贴,在线等待。 javascript中文排序问题 mtDropDown的问题
我现在要做这个功能主要是为了插入另一个页面,更改那个页面的table.我不能把那个页面的table给换掉,这个页面只是我测试用的,所以希望你能帮我看看问题出在哪里.谢谢!
xjdawu(左右互搏)的方法是正确的,每一轮你都少比较一次。
把for (var i = 1; i<sortedData.length-1; i++)改成for (var i = 1; i<sortedData.length; i++)应该是可以的。请楼主自己验证。
我使用了你的方法一样不对,问题是执行第一遍时(点击key),alert(sortedData)结果是
aaaer,aaafv,ebbv,erva
点第二次时结果是
erva,ebbv,aaafv,aaaer
显示的table也相应地排序正确
但第三次点击时结果是
aaafv,aaaer,ebbv,erva (前两个结果不对)
以后都是这样.
但我把处理alert(sortedData)后的for循环去掉后,alert显示的结果不会这样,是正确的.
<html>
<head>
<title>table sort test</title>
</head>
<script language=javascript>
function onSortIconClicked()
{
//alert(document.all.sortIcon.src);
var direction = "";
if (document.all.sortIcon.src.indexOf( "downArrow.gif") != -1)
{
document.all.sortIcon.src="upArrow.gif";
direction = "up";
}else
{
document.all.sortIcon.src="downArrow.gif";
direction = "down";
}
var tbl = document.getElementsByTagName("TABLE");
var row = tbl[0].rows;
var value = "";
var data = new Array();
for (var i = 1; i< row.length; i++)
{
value = row[i].cells[0].innerText;
data[i-1] = value;
}
var sortedData = sort(data, direction);
alert(sortedData);//<-- 显示排序结果
for (var i = 1; i<row.length; i++)
{
for (var j = 1; j<row.length; j++)
{
if (row[j].cells[0].innerText == sortedData[i])
{
var newRow = tbl[0].insertRow();
var newCell = newRow.insertCell();
newCell.innerText = row[j].cells[0].innerText;
newCell = newRow.insertCell();
newCell.innerText = row[j].cells[1].innerText;
tbl[0].deleteRow(j);
}
}
}}function sort(data, direction)
{
for (var i=1; i<data.length; i++)
{
for (var j = 0; j<data.length-i; j++)
{
if (direction == "up")
{
if (data[j] > data[j+1])
{
var temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
if (direction == "down")
{
if (data[j] < data[j+1])
{
var temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
return data;
}
</script>
<body>
<table width="694" border=1>
<tr>
<td bgcolor="#C0C0C0"><a href="javascript:onSortIconClicked()">key
<img id="sortIcon" border="0" src="downArrow.gif" width="9" height="8" ></a></td>
<td bgcolor="#C0C0C0">value</td>
</tr>
<tr>
<td>aaafv</td>
<td>vcccf</td>
</tr>
<tr>
<td>aaaer</td>
<td>bbbde</td>
</tr>
<tr>
<td>erva</td>
<td>errt</td>
</tr>
<tr>
<td>ebbv</td>
<td>q345t</td>
</tr>
</table>
</body>
</html>
请楼主试试??