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を削除しますが、行のIDを取得するurl_row_2に何を配置できますか、またはこれを行うための正しいコードは何ですか?

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 に答える