2011-10-03 38 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

没关系,我想通了! :) –