在 JavaScript 中使用此删除 table 行

Deleting table rows using this in JavaScript

我正在尝试构建一个事件,该事件会在我的 table.In 中的每一行中删除一行我有删除按钮,并且一旦单击该行中的按钮,就应删除适用的行。有没有办法使用 'this' 属性 来做到这一点?我尝试计算行和按钮的索引,但它太混乱了,我正在寻找更简单的代码。这是我到目前为止得到的, 'this' 部分显然不起作用。您能否告知是否有与 select 适用行类似的方法?

document.addEventListener("DOMContentLoaded", function () {

    var buttons = document.querySelectorAll(".deleteBtn");

    function removeItem (e) {

        var rows = document.querySelectorAll("tr");

        rows[this].parentNode.removeChild(rows[this]);
    }

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener("click", removeItem);
    }
 })

this 将引用您的 .deleteBtn 元素。假设它在您要删除的行内,您需要向上遍历该元素的父元素以找到 tr,然后将其删除:

function removeItem(e) {
    var tr = this;
    while (tr.tagName != "TR") {
        tr = tr.parentNode;
        if (!tr) {
            // Didn't find an ancestor TR
            return;
        }
    }
    tr.parentNode.removeChild(tr);
}

在现代浏览器上,您可以将 removeChild 行更改为:

tr.remove();

...但我不得不承认我不知道它的支持程度如何(我在看着你,Microsoft)。