2011-10-03 69 views
1

我有一個基於javascript生成的動態表單。下面是相關的javascript:如何刪除特定的textarea字段?

function addRowToTable() 
{ 

    var tbl = document.getElementById('convention'); 
    var lastRow = tbl.rows.length; 
    // if there's no header row in the table, then iteration = lastRow + 1 
    var iteration = lastRow; 
    var row = tbl.insertRow(lastRow); 


// right cell 
    var cellRight = row.insertCell(0); 

    var el = document.createElement('textarea'); 
    el.rows = '2'; 
    el.cols = '80'; 
    el.name = 'conventionSkill' + iteration; 
    el.size = 40; 

    var el2 = document.createElement('input'); 
    el2.type = 'hidden'; 
    el2.name = 'conventioni_alt'; 
    el2.value = iteration; 
    el2.size = 40; 


    el.onkeypress = keyPressTest; 
    cellRight.appendChild(el); 
    cellRight.appendChild(el2); 


} 

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

HTML:

<table id="convention"> 
    <tr> 
     <td><label>Skill Descriptions:</label></td> 
    </tr> 

    <tr> 
     <td> 
     <textarea name='convention_54' rows='2' cols='80'> 
text 
</textarea></td> 

     <td><a href='javascript:void(0)' onclick='removeRowFromTable(54);'><font size= 
     '+1'>-</font></a></td> 
    </tr> 

    <tr> 
     <td> 
     <textarea name='convention_55' rows='2' cols='80'> 
text2 
</textarea></td> 

     <td><a href='javascript:void(0)' onclick='removeRowFromTable(55);'><font size= 
     '+1'>-</font></a></td> 

     <td><a href='javascript:void(0)' onclick='addRowToTable();'><font size= 
     '+1'>+</font></a></td> 
    </tr> 
    </table> 

我喜歡的附加功能,因爲它只是增加了一個新的文本區域。但是,刪除按鈕會從表單底部刪除。我怎樣才能讓removeRowFromTable移除一個特定的textarea?例如,如果我想刪除中間的一個textareas,而不是表單中的最後一個。

感謝您的任何建議!

回答

5

總之,你必須找到你想刪除確切的textarea(可能是由ID)。然而,在你走得太遠這條道路滾動的ID枚舉和DOM操作代碼之前,你可能想看看jQuery(http://jquery.com/)。 jQuery通過它的選擇器機制很容易地處理這些東西,並且可以幫助你避免許多跨瀏覽器的麻煩,如果你試圖自己完成所有的DOM操作。

你會在SO上發現很多關於jQuery的問題;例如看錶該所關乎多麼容易和簡單的操作是:

What is the best way to remove a table row with jQuery?

恕我直言學習jQuery的是對我和我的團隊極大的Javascript生產力提升 - 這是非常值得在我的經驗中花費的時間。

+0

感謝您的建議。我正在研究這個問題,但我遇到的問題是每個textarea都是動態的 - 我的意思是,每個人都會有完全不同的ID。所以我不能讓jquery在不知道元素名稱的情況下刪除行,並且jquery不會知道元素的名稱,除非它在PHP循環中。有什麼建議麼? :\ –

+1

沒關係,我想通了! :) –