nice 非常好。解决问题然后把解决方法或者代码贴出来很好。

解决方案 »

  1.   

    相关问题和考虑都写在注释中了,你自己参考使用,代码精简如下:
    <script type="text/javascript">  
    var idx = 1;//全局保存序号,初始值为1 
      
    $(function(){  
      
        $("#t136 tr").attr("align","center");  
        
        //增加一行   
        $("#but").click(function(){ 
          var html  =   "<tr id=T_{0} align='center'>"
                        +"<td><a href=\'javascript:void(0)\'>删除</a></td>"  
                        +"<td>{0}</td>" 
                        +"<td><select name=_ColorName_{0} style=width:auto;><option value=红色 >红色</option><option value=咖啡色 >咖啡色</option><option value=驼色 >驼色</option></select></td>" 
                        ///////// 
                           
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_S_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_M_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_L_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_XL_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_XXL_{0}'/></td>"
                          
                        ///////// 
                        +"</tr>";   
           html    =   html.replace(/\{0\}/g,idx++);//自增序号,且替换掉模板中的值      
           $("#t136").append(html);//追加行 
           $('#intK').val(idx-1);                
        });
        
        //删除行,并重建序号
        
        $('#t136').on('click','tr a',function(){
        
            //删除当前行
            $(this).parents('tr').remove();
            
            $("#t136 tr:gt(0)").replaceWith(function(index){
                
                //序号是从零开始的,使其自增,作为序号使用
                index++;
                
                //更新序号
                $(this).find('td')
                    .eq(1)
                    .text(index);
                
                /*
                    返回 replaceWith 所需的DOM结构
                    
                    不知道你说的“1,原代码用的attr 改变name 值,但改变后其它javascript代码无法正确识别。”发生的环境
                    没有研究过replaceWith的原理
                    但按道理说,你可以
                    1:将上面的 $("#t136 tr:gt(0)").replaceWith 改为:$("#t136 tr:gt(0)").html
                    2:将下面的return语句改为:
                    
                    //更新当前行ID 
                  $(this).attr('id','T_'+(index));
                  //返回最新的DOM结构
                    return $(this).html().replace(/_(.*?)_(\d+)/g,'_$1_'+index);
                */
                
                return  "<tr id=T_"+index+" align='center'>"
                        + $(this).html().replace(/_(.*?)_(\d+)/g,'_$1_'+index)
                        + '</tr>';
            });
            
            //重置全局序号 
            idx = $("#t136 tr").size(); 
           $('#intK').val(idx-1);  
        }) 
    })  
    </script>
      

  2.   

    忘了使用代码格式了<script type="text/javascript">  
    var idx = 1;//全局保存序号,初始值为1 
      
    $(function(){  
      
        $("#t136 tr").attr("align","center");  
        
        //增加一行   
        $("#but").click(function(){ 
          var html  =   "<tr id=T_{0} align='center'>"
                        +"<td><a href=\'javascript:void(0)\'>删除</a></td>"  
                        +"<td>{0}</td>" 
                        +"<td><select name=_ColorName_{0} style=width:auto;><option value=红色 >红色</option><option value=咖啡色 >咖啡色</option><option value=驼色 >驼色</option></select></td>" 
                        ///////// 
                           
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_S_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_M_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_L_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_XL_{0}'/></td>"
                          
                        +"<td><input type='text' class='number' size='6' maxlength='6' value='0' name='_XXL_{0}'/></td>"
                          
                        ///////// 
                        +"</tr>";   
           html    =   html.replace(/\{0\}/g,idx++);//自增序号,且替换掉模板中的值      
           $("#t136").append(html);//追加行 
           $('#intK').val(idx-1);                
        });
        
        //删除行,并重建序号
        
        $('#t136').on('click','tr a',function(){
        
            //删除当前行
            $(this).parents('tr').remove();
            
            $("#t136 tr:gt(0)").replaceWith(function(index){
                
                //序号是从零开始的,使其自增,作为序号使用
                index++;
                
                //更新序号
                $(this).find('td')
                    .eq(1)
                    .text(index);
                
                /*
                    返回 replaceWith 所需的DOM结构
                    
                    不知道你说的“1,原代码用的attr 改变name 值,但改变后其它javascript代码无法正确识别。”发生的环境
                    没有研究过replaceWith的原理
                    但按道理说,你可以
                    1:将上面的 $("#t136 tr:gt(0)").replaceWith 改为:$("#t136 tr:gt(0)").html
                    2:将下面的return语句改为:
                    
                    //更新当前行ID 
                  $(this).attr('id','T_'+(index));
                  //返回最新的DOM结构
                    return $(this).html().replace(/_(.*?)_(\d+)/g,'_$1_'+index);
                */
                
                return  "<tr id=T_"+index+" align='center'>"
                        + $(this).html().replace(/_(.*?)_(\d+)/g,'_$1_'+index)
                        + '</tr>';
            });
            
            //重置全局序号 
            idx = $("#t136 tr").size(); 
           $('#intK').val(idx-1);  
        }) 
    })  
    </script>