把你的函数改了一下, 不过感觉你的设计思路不是很周全:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>js-tablegrid2</TITLE>
<script language="javascript">
var colnum=5;
function ShowNext(e)
{
   var grid = document.getElementById("grid");
   col=grid.rows.length;   //行数
   if(event) event.cancelBubble=true;
   if(e)
   {
       var tr = e.parentNode.parentNode;
       if(tr.rowIndex<col-1)
       {
           grid.rows[tr.rowIndex+1].cells[1].childNodes[0].focus();
           return;
       }
   }
   var gridtr=grid.insertRow(col);  //表格添加行
   for(i=0;i<colnum;i++)
   {
        var gridtd=gridtr.insertCell(i);   //行添加列
        if(i<colnum-1)
        {
            if(i<1)
            {
                  gridtd.innerHTML="<input type=button value=- onclick='parentNode.parentNode.removeNode(true)'>";
            }
            else
            {
                  gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+">";
            }
        }
        else
        {
            gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+" "+
            "onKeyDown=\"if(event.keyCode==13){ShowNext(this);}\">";
        }
   }
   window.status="Rowcords:"+(col+1);
   document.all("r"+col+"c1").focus();
}
</script>
</HEAD>
<body onKeyDown="if (event.keyCode==13) event.keyCode=9;">
<table id="grid" width=895 border=1 bordercolor=#dcdcdc bgcolor=#eff8fc cellpadding=0 cellspacing=0></table>
<script language="javascript">
   ShowNext();
</script>
</BODY>
</HTML>

解决方案 »

  1.   

    那你就在 gridtd.innerHTML="<input type=button value=- onclick='parentNode.parentNode.removeNode(true)'>"; 里加个判断了, 判断表格只剩下一行的时候不删就是了.
      

  2.   

    好,行了,我按你的思路做了判断了,如下:
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <TITLE>js-tablegrid2</TITLE>
    <script language="javascript">
    var colnum=5;
    function ShowNext(e) {
       var grid = document.getElementById("grid");
       col=grid.rows.length;   //行数
       if(event) event.cancelBubble=true;
       if(e) {
           var tr = e.parentNode.parentNode;
           if(tr.rowIndex<col-1) {
               grid.rows[tr.rowIndex+1].cells[1].childNodes[0].focus();
               return;
           }
       }
       var gridtr=grid.insertRow(col);  //表格添加行
       for(i=0;i<colnum;i++) {
            var gridtd=gridtr.insertCell(i);   //行添加列
            if(i<colnum-1) {
                if(i<1) {
                     if(col<1) {
                          gridtd.innerHTML="<input type=button value=->";
                     } else {
                          gridtd.innerHTML="<input type=button value=- onclick='parentNode.parentNode.removeNode(true)'>";
                     }
                } else {
                      gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+">";
                }
            } else {
                gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+" "+"onKeyDown=\"if(event.keyCode==13){ShowNext(this);}\">";
            }
       }
       window.status="Rowcords:"+(col+1);
       document.all("r"+col+"c1").focus();
    }
    </script>
    </HEAD>
    <body onKeyDown="if (event.keyCode==13) event.keyCode=9;">
    <!--#include file="../menuroot.asp"-->
    <table id="grid" width=895 border=1 bordercolor=#dcdcdc bgcolor=#eff8fc cellpadding=0 cellspacing=0></table>
    <script language="javascript">
       ShowNext();
    </script>
    </BODY>
    </HTML>但是有个怪现象:就是状态栏上显示的行数和我实际看到的行数不相符啊。
      

  3.   

    比如我增加了5行,然后又删除了4行,只剩一行,
    但是 window.status="Rowcords:"+(col+1);  仍然显示是5行。
    怎么会这样呢,我该取哪个变量?
      

  4.   

    状态栏里的 5 是老的值, 你把这句window.status="Rowcords:"+(col+1);放在函数前面就OK了
      

  5.   

    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <TITLE>js-tablegrid2</TITLE>
    <script language="javascript">
    var colnum=5;
    function delRow(e)
    {
      var grid = document.getElementById("grid");
      var tr = e.parentNode.parentNode;
      if(grid.rows.length > 1) tr.removeNode(true);
      window.status="Rowcords:"+ grid.rows.length;
    }
    function ShowNext(e) {
       var grid = document.getElementById("grid");
       col=grid.rows.length;   //行数
       window.status="Rowcords:"+ col;
       if(event) event.cancelBubble=true;
       if(e) {
           var tr = e.parentNode.parentNode;
           if(tr.rowIndex<col-1) {
               grid.rows[tr.rowIndex+1].cells[1].childNodes[0].focus();
               return;
           }
       }
       var gridtr=grid.insertRow(col);  //表格添加行
       window.status="Rowcords:"+(col+1);
       for(i=0;i<colnum;i++) {
            var gridtd=gridtr.insertCell(i);   //行添加列
            if(i<colnum-1) {
                if(i<1) {
                  gridtd.innerHTML="<input type=button value=- onclick='delRow(this)'>";
                } else {
                      gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+">";
                }
            } else {
                gridtd.innerHTML="<input type=text id=r"+col+"c"+i+" name=r"+col+"c"+i+" "+"onKeyDown=\"if(event.keyCode==13){ShowNext(this);}\">";
            }
       }
       document.all("r"+col+"c1").focus();
    }
    </script>
    </HEAD>
    <body onKeyDown="if (event.keyCode==13) event.keyCode=9;">
    <!--#include file="../menuroot.asp"-->
    <table id="grid" width=895 border=1 bordercolor=#dcdcdc bgcolor=#eff8fc cellpadding=0 cellspacing=0></table>
    <script language="javascript">
       ShowNext();
    </script>
    </BODY>
    </HTML>