javascript动态添加删除行嵌套

时间:2012-11-16 18:26:14

标签: javascript

我遇到了在javascript中添加和删除空白行的问题......这是一个嵌套问题和唯一的ID问题。

总结一下,我有三个表单字段。 Field1,Amount1,Amount2。 Field1可以有多个Amount1& AMOUNT2。也可以有多个Field1,也可以有多个Amount1,Amount2。问题是我的“添加”按钮复制了额外的Amount1,Amount2(存在时)。只是为了解释,“添加行”添加了Amount1,Amount2。选中复选框后,“删除行”将删除Amount1,Amount2。

当我点击“添加”按钮时,我想要一个新的Field1,Amount1,Amount2但没有额外的Amount1,Amount2。当我在附加的表单字段集中单击“添加行”或“删除行”时,我希望它添加或删除该特定集中的Amount1,Amount2。

我需要为每一行分配一个唯一的标识符,以使其工作,但无法弄明白。

这是我的代码,如果执行它可能会更有意义。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"><head>

    <script type="text/javascript">

    function addRow(tableID) {               
    var table = document.getElementById(tableID);               
    var rowCount = table.rows.length;             
    var row = table.insertRow(rowCount);               
    var colCount = table.rows[0].cells.length;               
     for(var i=0; i<colCount; i++) {                   
    var newcell = row.insertCell(i);                   
     newcell.innerHTML = table.row[0].cells                                                [i].innerHTML; //alert                                                       (newcell.childNodes);
switch(newcell.childNodes[0].type) {                     


    case "text":                             
    newcell.childNodes[0].value = "";                            
    break;                     
    case "checkbox":                             
    newcell.childNodes[0].checked = false;                             
    break;                     
    case "select-one":                             
    newcell.childNodes[0].selectedIndex = 0;                            
    break;   

    }             
    }         
    }

    function deleteRow(tableID) {             
     try {             
       var table = document.getElementById(tableID);             
       var rowCount = table.rows.length;               
         for(var i=0; i<rowCount; i++) {                 
       var row = table.rows[i];                 
       var chkbox = row.cells[0].childNodes[0];                 
        if(null != chkbox && true == chkbox.checked) {                     
        if(rowCount <= 1) {                         
           alert("Cannot delete all the rows.");                        
       break;                     
      }  

     table.deleteRow(i);                     
      rowCount--;                    
       i--;                 
       }                 
       }             
       }catch(e) 
       {                 
       alert(e);             
       }         
       }


       var _counter = 0;
       function Add() {
           _counter++;
           var oClone = document.getElementById("template").cloneNode(true);
           oClone.id += (_counter + "");
           document.getElementById("placeholder").appendChild(oClone);
       }

       </script>
       </head>



       <body>

    <fieldset id="fieldset">

        <div id="placeholder">
        <div id="template">


           <br>


    <table  id= "act_legis">
            <tr>
                <td>Field1:</td>
                <td>Amount1:</td>
        <td>Amount2:</td>
                <td>&nbsp;</td> 
        </tr>
    </table>


    <table id= "act">
            <tr>  
                <td>
                    <button type="button" name="Submit" 
                     align = "left" onclick="Add();">Add</button>
                    <input name="Field1" type="text" size="4" maxlength="4"/></td>    
            </tr>
    </table>


    <table id= "legis_amounts">
            <tr>
                <td>
                    <input type="checkbox" name="chk"/>
                    <input name="Amount1" type="text" size="10"maxlength="18"/>
               </td>
      <td>
                 <input name="Amount2" type="text" size="10" maxlength="18"/>
      </td>
           </tr>
    </table>

    <table>
    <tr>
        <td>
                    <input type="button" onclick="addRow('legis_amounts');
            return false;"  value = "add row"/>
            <input type="button" value = "delete row" onclick="deleteRow
                    ('legis_amounts');return false;"  />
                  </td>
    </tr>
    </table>

        </div> <!-- template -->
        </div> <!-- placeholder -->
        </fieldset>

    <table>
            <tr>
                <td><p>&nbsp;</p>
                </td>
            </tr>
    </table>


    </body>
    </html>

0 个答案:

没有答案