0

我正在尝试获取一个脚本来删除表格行。

var i = 1;

function addURL() {
    var tr = document.createElement('tr');
    tr.setAttribute("id", "url_row_" + ++i);
    var td = tr.appendChild(document.createElement('td'));
    td.style.valign = 'middle';

    td = tr.appendChild(document.createElement('td'));
    var input = td.appendChild(document.createElement('input'));
    input.name = 'url[]';
    input.type = 'text';
    input.size = '40'
    var node = document.getElementById('myTable').tBodies[0];
    node.insertBefore(tr, node.children[3]);

    var link = document.createElement("a");
    link.setAttribute("href", ""); 
    link.setAttribute("style", "text-decoration: none;");
    link.setAttribute("onClick", "removeURL('');return false;");
    td = tr.appendChild(document.createElement('td'));
    td=td.appendChild(link)
    td.appendChild(document.createTextNode('-'));
}

function removeURL(divNum) {
    var d = document.getElementById('myTable').tBodies[0];
    var olddiv = document.getElementById(divNum);
    d.removeChild(olddiv);
}

这可以生成任意数量的 url_row_(number) 文本字段。我只是不知道如何删除这些行。

我知道做

link.setAttribute("onClick", "removeURL('url_row_2');return false;");

将删除 url_row_2,但是我可以在 url_row_2 中放置什么来获取该行的任何 ID,或者执行此操作的正确代码是什么?

4

2 回答 2

0

为此,您将使用字符串连接来连接i到处理程序字符串以定位给定的tr.

link.setAttribute("onclick", "removeURL('url_row_" + i + "');return false;");
于 2012-12-19T19:50:15.580 回答
0

不要setAttribute用于事件监听器。查看quirksmode.org 上的事件处理简介,尤其是简单事件注册模型。此外,您可以只使用事件对象中的信息来识别要删除的行:

function clickHandler(event) {
    var anchor = this; // == event.targetElement
    var tr = anchor.parentNode.parentNode;
    tr.parentNode.removeChild(tr);
    event.preventDefault(); // do not follow the href
}

function addURL() {
    …

    var link = document.createElement("a");
    link.setAttribute("href", "#"); 
    link.setAttribute("style", "text-decoration: none;");
    link.onclick = clickHandler;
    td = tr.appendChild(document.createElement('td'));
    td.appendChild(link)
    link.appendChild(document.createTextNode('-'));
}
于 2012-12-19T22:43:03.163 回答