JS:addEventListener 到动态创建的 DOM 个对象,删除 parentNode

JS: addEventListener to the dynamically created DOM objects, which delete parentNode

我正在尝试这样做:使用一些用户输入的数字执行简单计算,然后单击将计算添加到新行中的 table。 Table 应该有三列,代表三个数字。一切都很好,但我被困在这个问题上:如何为用户添加删除某些行的选项?

所以,这将是 html 结构:

        <tbody id="tableBody">
            <tr id="row8"> <!-- In js this is ("row" + i) -->
                <td class="dimA"></td>
                <td class="dimB"></td>
                <td class="area"></td>
                <td><input type="checkbox" id="del8"></td> <!-- In js this is ("del" + i) -->
            </tr>
        </tbody>

所以,tr元素是由javascript创建的,每次添加ids中的i都会递增。当用户选中复选框时,我需要能够删除整行。我知道使用 addEventListener 的方法,但是如何使用未知数量的项目?

这里是Javascript:

function dodajNaListu(eventInfo) {
    if (dimA & dimB !== 0) {
        var tr = document.createElement("tr");
        tr.id = "row" + i;

        var td1 = document.createElement("td");
        td1.className = "dimA";
        var A = document.createTextNode(dimA);
        td1.appendChild(A);

        var td2 = document.createElement("td");
        td2.className = "dimB";
        var B = document.createTextNode(dimB);
        td2.appendChild(B);

        var td3 = document.createElement("td");
        td3.className = "area";
        var P = document.createTextNode(rezultat);
        td3.appendChild(P);

        var td4 = document.createElement("td");
        var chck1 = document.createElement("input");
        chck1.id = "del" + i;
        chck1.setAttribute("type", "checkbox");
        td4.appendChild(chck1);

        tr.appendChild(td1);
        tr.appendChild(td2);
        tr.appendChild(td3);
        tr.appendChild(td4);
        document.getElementById("tableBody").appendChild(tr);
        i++;
    }
}

我显然是这方面的新手。不,我没有使用 jQuery。这实际上是我工作所需的 Windows 8.1 应用程序。

好的,我找到了答案。这是 jsfiddle link: http://jsfiddle.net/sez1bwL3/

我为调用此函数的函数 dodajNaListu 中创建的每个复选框添加了一个事件侦听器:

function delRow() {
    var current = window.event.srcElement;
    while ((current = current.parentElement) && current.tagName != "TR");
    current.parentElement.removeChild(current);
}

这是 link 我找到答案的网页: http://www.joegarrepy.com/tableaddrow_jscript.htm

祝你有愉快的一天。