JS中如何实现循环的行互换?

hjcfengyue 2009-11-20 04:01:09
function sortDate(tbName){
var objTable=document.getElementById(tbName);//获得TABLE对象

for(i=1;i<objTable.rows.length-1;i++)
{

var i1=objTable.rows[i].cells[1].innerText;
var i2=objTable.rows[i+1].cells[1].innerText;

if(Number(i1)>Number(i2)){

objTable.rows[i].swapNode(objTable.rows[i+1]);
}



}
}

页面上我是用的点击事件将TABLE的名字传进来的 现在我将行互换加入循环 但是我发现要点很多次才能将行全部替换好

请问 要怎样才能一次性的替换完毕? 高手请指教下呀
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjcfengyue 2009-11-20
  • 打赏
  • 举报
回复
你们的方法都不对呀 连替换都替换不了了 我刚才的方法还能替换 只不过循环有问题罢了
zhangxinyuok_love 2009-11-20
  • 打赏
  • 举报
回复
<script language="javascript" type="text/javascript">
var tb;
var i;
function SortData(tableid) {
tb = document.getElementById(tableid);
i = 0;
_SortData(_SortData);
}
function _SortData() {
// for (var i = 0; i < tb.rows.length - 1; i++)
if (i < tb.rows.length - 1) {
var rowanum;
var rowbnum;
var tem;
rowanum = tb.rows[i].cells[1].innerText;
rowbnum = tb.rows[i + 1].cells[1].innerText;
if (Number(rowanum) < Number(rowbnum)) {
tem = rowbnum;
rowbnum = rowanum;
rowanum = tem;
tb.rows[i].cells[1].innerText = rowanum;
tb.rows[i + 1].cells[1].innerText = rowbnum;
}
i++;
setTimeout(_SortData, 5);

}
else
{ return; }
}
</script>

//大致思路就是这样,这个没有完全实现所有的排序,只是把第一行的数排好了,冒泡你也学过,要实现所有排序自己写吧
zhangxinyuok_love 2009-11-20
  • 打赏
  • 举报
回复
好吧,我out了,你的代码没有问题。出现这个问题是由于JavaScript是单线程,他会把所有代码全执行完才去改变页面的值,所以你第二次循环过来取的cell还是原来的。把for循环改了,用if+settime做
jol_boy 2009-11-20
  • 打赏
  • 举报
回复
这样?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--

function sortDate(tbName){
var objTable=document.getElementById(tbName);//获得TABLE对象
var falg=false;
for(i=0;i <objTable.rows.length-1;i++)
{
var i1=objTable.rows[i].cells[0].innerText;
var i2=objTable.rows[i+1].cells[0].innerText;

if(Number(i1)>Number(i2)){
falg = true;
objTable.rows[i].swapNode(objTable.rows[i+1]);
}
}
if(falg)
{
sortDate('tbl1');
}


}

//-->
</SCRIPT>
<TABLE id="tbl1">
<TR>
<TD>5</TD>
</TR>
<TR>
<TD>9</TD>
</TR>
<TR>
<TD>3</TD>
</TR>
<TR>
<TD>4</TD>
</TR>
</TABLE>

<INPUT TYPE="button" VALUE="互换" ONCLICK="sortDate('tbl1')">
</BODY>
</HTML>

hjcfengyue 2009-11-20
  • 打赏
  • 举报
回复
..... 没有我还排个啥? 你自己试试呀
zhangxinyuok_love 2009-11-20
  • 打赏
  • 举报
回复
dom 里有rows这个对象?

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧