【问题标题】:Delete row table intercepting the button?删除行表拦截按钮?
【发布时间】:2018-03-29 23:57:57
【问题描述】:

我有一个表格,您可以在其中添加新行,也可以删除。我使用了一个过时的系统,我按下一个按钮并插入要删除的行,但这不是最好的。

现在我为每一行创建一个“删除”按钮,我会确保每次按下该按钮时,相应的行都会被删除。 你能做到吗?

input5.onclick = function Ultimo(event)
                {
                    event = event || window.event;             
                    var row =  event.target || event.srcElement;
                    document.getElementById('table').deleteRow(row);
                    cont--;
                }

每次您在我的表单中按“+”时都会生成该按钮。 对于每个按钮隔膜,它的 onclick,与删除行有关的功能。 Cont 是一个行计数器。

【问题讨论】:

    标签: javascript row


    【解决方案1】:

    如果您只想将其从 DOM 中删除,这非常简单。你可以用纯 Javascript 或 JQuery 来做。使用 JQuery 会更具可读性和可维护性。

    纯 Javascript 解决方案:

    http://jsfiddle.net/k5mfe/

    <table>
        <tr><td>One</td><td><a href="#" onclick="removeRow(this)">Delete</a></td></tr>
            <tr><td>Two</td><td><a href="#" onclick="removeRow(this)">Delete</a></td></tr>
            <tr><td>Three</td><td><a href="#" onclick="removeRow(this)">Delete</a></td></tr>
    </table>
    
    
    <script>
        function removeRow(el)
    {
        var tr = el.parentElement.parentElement;
        tr.parentElement.removeChild(tr);
    
    }
    </script>
    

    jQuery 解决方案

    http://jsfiddle.net/k5mfe/1/

    <script>
    function removeRow(el)
    {
        $(el).parents('tr').remove();
    }
    </script>
    

    【讨论】:

    • 我更改为:input5.onclick = function Ultimo(event) {var tr = event.parentElement.parentElement; tr.parentElement.removeChild(tr); } 但是当我点击删除按钮时,所有行都被删除了:(
    • 从 Ultimo 中删除 event 参数并将“event”替换为 input5 然后它会起作用(假设 input5 是您的按钮)。
    • 我收到此错误:无法读取未定义的属性'parentelement'
    • 基本上,这个想法是遍历 DOM 并找到行。然后,在您获得父级的行上(应该是表或 tbody)。然后从 table 或 tbody 中,您可以删除该行。你应该拿出调试器来帮助你解决问题。
    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多