2012-02-21 65 views
0

我已經在Javascript中動態添加/刪除行,添加行時沒有問題,只有在刪除行時出現問題。 現在,我所做的是,當我想刪除一行它總是刪除最後一個,所以我認爲I want if it only can be deleted the selected row,我不知道如何修改腳本到我想要的。如何刪除Javascript中的一行?

下面是腳本:

var i=0; 
function addRow() 
{ 
i++; 
    m.r.value = i; 
    var tbl = document.getElementById('table'); 
    var lastRow = tbl.rows.length; 
    var iteration = lastRow - 1; 
    var row = tbl.insertRow(lastRow); 

    var cellLeft = row.insertCell(0); 
    var textNode = document.createTextNode(iteration); 
    cellLeft.appendChild(textNode); 

    var cellRightSel1 = row.insertCell(1); 
    var sel = document.createElement('select'); 
    sel.name = 'name' + iteration; 
    sel.setAttribute("onchange", "choosec(this);");  
    var item = new Option("",""); 
    sel.options[sel.length] = item; 
    <? 
    while($data = mysql_fetch_array($result)){          
    ?> 
    var item = new Option("<?=$data["Name"];?>","<?=$data["ID"];?>"); 
    sel.options[sel.length] = item; 
    <? } ?> 
    cellRightSel1.appendChild(sel); 

    var cellRightSel2 = row.insertCell(2); 
    var sel = document.createElement('select'); 
    sel.name = 'class' + iteration; 
    sel.setAttribute("onchange", "choosepoint(this);");  
    var item = new Option ("",""); 
    sel.options[sel.length] = item; 
    <? 
    while($data = mysql_fetch_array($result_sub)){          
    ?> 
    var item = new Option("<?=$data["Class"];?>","<?=$data["ID"];?>"); 
    sel.options[sel.length] = item; 
    <? } ?> 
    cellRightSel2.appendChild(sel); 

    var cellRight = row.insertCell(3); 
    var div = document.createElement('div'); 
    div.id = 'point' + iteration; 
    cellRight.appendChild(div); 
} 


function removeRow(){ 
    var tbl = document.getElementById('table'); 
    var lastRow = tbl.rows.length; 
    var rem = lastRow - 1; 
    if (lastRow > 2) tbl.deleteRow(rem); 
} 

幫助表示讚賞,感謝。

我的亟待解決的問題:

function removeRow(t){ 
     var i = t.parentNode.parentNode.rowIndex; 
     var tbl = document.getElementById('table'); 
     var lastRow = tbl.rows.length; 
     var iteration = lastRow - 1; 
     tbl.deleteRow(i); 
    } 
+0

一個名爲'i'的全局變量?內聯事件處理程序?你有沒有考慮過使用jQuery? (其實,在像Raynos這樣的人抱怨提示jQuery之前,你也可以在沒有jQuery的情況下進行改進 - 但爲什麼要寫更多的代碼而不是encessary) – ThiefMaster 2012-02-21 16:16:48

回答

0

這是需要改變的代碼:

var rem = lastRow - 1; 

眼下,這始終會是最後一排。你可以建立一些邏輯來傳遞索引,或者尋找一個字符串,或者其他任何東西,但是tbl.deleteRow()需要在特定索引處刪除。

如果你想刪除第3行,例如:

var rem = 2; //zero-based index 
3

嘗試這樣

<tr onclick="removeRow(this);">...</tr> 

然後在JavaScript方法

function removeRow(row){ 
    var tbl = row.parentNode; 
    var index = row.parentNode.rowIndex; 
    if (index > 2) tbl.deleteRow(index); 
} 

我找到了一個好例如適合您的要求。 check here

+0

謝謝Mr.rajkumar,我已經找到了問題:) – candies 2012-02-29 04:08:17

+0

歡迎你的朋友.. – 2012-02-29 05:10:37

+0

@candies我認爲你應該標記這個答案是正確的。 – 2013-10-22 06:25:27