动态添加&删除表格行

时间:2012-01-27 15:35:52

标签: javascript html

我想知道是否有人可以帮助我。

使用一些示例我发现我已经调整了一些代码,如下所示,允许用户添加和删除表行。

Javascript代码

function addRow(addimagetable) { 
    var table = document.getElementById(addimagetable); 
    var rowCount = table.rows.length; 
    var row = table.insertRow(rowCount); 
    var cell1 = row.insertCell(0); 
    var element1 = document.createElement("input"); 
    element1.type = "radio"; 
    cell1.appendChild(element1); 
    var cell2 = row.insertCell(1);  
    var element2 = document.createElement("input"); 
    element2.type = "text"; 
    cell2.appendChild(element2); 
    var cell3 = row.insertCell(2); 
    var element3 = document.createElement("input"); 
    element3.type = "file"; 
    cell3.appendChild(element3); 
    } 
    function deleteRow(addimagetable) { 
    try { 
    var table = document.getElementById(addimagetable); 
    var rowCount = table.rows.length; 
    for(var i=0; i<rowCount; i++) { 
    var row = table.rows[i]; 
    var radio = row.cells[0].childNodes[0]; 
    if(null != radio && true == radio.checked) { 
    table.deleteRow(i); 
    rowCount--; 
    i--; 
    } 
    } 
    }catch(e) { 
    alert(e); 
    } 
    } 

HTML表格

 <input type="button" value="Add Row" onclick="addRow('addimagetable')" /> <input type="button" value="Delete Row" onclick="deleteRow('addimagetable')" /> 
                <table id="addimagetable" width="407" border="1"> 
                <tr><td width="20"><input type="radio" name="radio"/></td>
                  <td width="147"><input type="text" name="title" /></td>
                  <td width="218"><input type="file" name="image" /></td>
                </tr>

            </table>
            </div>

从上面的表格代码中可以看出,通过“点击”按钮添加或删除行。我一直试图解决的是如何摆脱“添加”按钮,而不是用一个函数替换它,如果一行在单元格'2'和'3'中有数据,则创建下面的新行。 / p>

我已经在这方面工作了一段时间,我似乎无法找到一种方法让它发挥作用。

我只是想知道是否有人可以帮助我并告诉我哪里出错了。

非常感谢

1 个答案:

答案 0 :(得分:0)

我找到了你的问题,因为我正试图解决类似的问题。我用你的案例(因为它比我的简单)来解决问题...我认为与你分享结果是公平的。

以下代码检查每次每行中两个受监视的输入中的一个失去焦点 - 如果该行的两个受监视输入都有值(并且该行尚未导致生成其他行),则新行为在下面添加。

<强> HTML:

     <input type="button" value="Add Row" onclick="addRow('addimagetable')" /> 
     <input type="button" value="Delete Row" onclick="deleteRow('addimagetable')" /> 
     <table id="addimagetable" width="407" border="1"> 
       <tr>
           <td width="20"><input type="radio" name="radio"/></td>
           <td width="147"><input type="text" name="title" onblur="check(1)" /></td>
           <td width="218"><input type="file" name="image" onblur="check(1)" /></td>
       </tr>
     </table>

<强>脚本:

<script>
var numrows = 1; // because you are starting with 1 row visible
var rowsarray = ["0", "0"];
function addRow(addimagetable) { 
    numrows = numrows + 1;
    rowsarray[numrows] = "0";
    var table = document.getElementById(addimagetable); 
    var rowCount = table.rows.length; 
    var row = table.insertRow(rowCount); 
    var cell1 = row.insertCell(0); 
    var element1 = document.createElement("input"); 
    element1.type = "radio"; 
    cell1.appendChild(element1); 
    var cell2 = row.insertCell(1);  
    var element2 = document.createElement("input"); 
    element2.type = "text"; 
    cell2.appendChild(element2); 
    element2 = cell2.getElementsByTagName("input")[0];
    element2.setAttribute("onblur","check("+numrows+")");
    var cell3 = row.insertCell(2); 
    var element3 = document.createElement("input"); 
    element3.type = "file"; 
    cell3.appendChild(element3); 
    element3 = cell3.getElementsByTagName("input")[0];
    element3.setAttribute("onblur","check("+numrows+")");
    } 
    function deleteRow(addimagetable) { 
    try { 
    var table = document.getElementById(addimagetable); 
    var rowCount = table.rows.length; 
    for(var i=0; i<rowCount; i++) { 
    var row = table.rows[i]; 
    var radio = row.cells[0].childNodes[0]; 
    if(null != radio && true == radio.checked) { 
    table.deleteRow(i); 
    rowCount--; 
    i--; 
    } 
    } 
    }catch(e) { 
    alert(e); 
    } 


} 
       function check(num) {
            table = document.getElementById('addimagetable');
            row = table.getElementsByTagName("tr")[num-1];
            c1 = row.getElementsByTagName("td")[1].getElementsByTagName('input')[0].value;
            c2 = row.getElementsByTagName("td")[2].getElementsByTagName('input')[0].value;
            if ((c1 !== "") && (c1 !== null ) && (c2 !== "") && (c2 !== null) && (rowsarray[num] !== 1)) { addRow('addimagetable'); rowsarray[num] = 1; }
        }
        </script>