2012-12-19 122 views
0

我试图让脚本删除一个表行。Javascript删除特定行

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,该行或什么是正确的代码来做到这一点?

+0

“*抢什么ID,该行*” - 用你想用的ID,如果没有识别它什么? – Bergi

+0

我想通过id来识别它,但我不能放入url_row_2,因为那样只会删除该行。我需要它来获取链接“ - ”所在的每一行的id。如果我创建了url_row_2,url_row_3和url_row_4,那么它们旁边会出现一个“ - ”。当我点击“ - ”时,它应该删除我点击的“ - ”所在的行。如果我点击url_row_3旁边的“ - ”,它会删除url_row_3。 – markerpower

回答

0

要做到这一点,你可以使用字符串连接来连接i到处理程序字符串中,以定位给定的tr

link.setAttribute("onclick", "removeURL('url_row_" + i + "');return false;"); 
+0

感谢您的帮助。 – markerpower

0

请勿使用setAttribute作为事件侦听器。看看Introduction to event handling at quirksmode.org,特别是在simple event registration model。此外,你可以使用从事件对象的信息,以确定该行删除:

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('-')); 
}