2011-08-02 53 views
0

我有一個表單,其元素被整齊地格式化在嵌套在表單標記中的表中,並且我想用新的輸入向該表中添加另一行。如何將新輸入附加到表單元素(使其存在於document.forms.formName中並將與表單一起提交)AND添加到新行的單元格(以便它在行內呈現)?將輸入附加到表單和呈現的元素

在單元格和表單元素上調用appendChild方法都會將其追加到最後一個調用的對象上,而不是給它一種雙重成員資格。是否有某種附加形式可以從形式調用,不影響元素的渲染方式?

編輯:Woops,表格嵌套在表格中,反之亦然。這在Firefox 3.6中不起作用,但在Internet Explorer 8中起作用。

+0

爲了簡單起見,我建議jQuery,因爲不同的瀏覽器處理'table'操作的方式不同。 (當然,也可以考慮不使用'table'來進行佈局)。如果你的'form'封裝了你的'table',你只需要在你的'table'中添加一個新行來加入'form '。 –

+0

啊,實際上我的表格嵌套在表格中,而不是相反。一個快速測試表明,這導致輸入無法在Firefox 3.6下的表單中註冊(儘管不在IE8下)。猜猜這就是我沒有仔細看看我的舊代碼所得到的結果。 – Sixtyten

+0

是的。我不會猜測'TABLE'中的'FORM'標記是如何的,但如果你有多行,你完全由瀏覽器的怪異模式渲染你的表格和表格。 –

回答

0

如果您只想要現有表格行的副本,只需克隆整個行並將其添加到表格即可。如果表格在表單中,則輸入將自動添加到表單中。

一個簡單的例子:

<form ...> 
    <table> 
    <tr><td><input name="foo"> 
    </table> 
</form> 

<button onclick=" 
    var table = document.getElementsByTagName('table')[0]; 
    var tBody = table.tBodies[0] 
    var newRow = tBody.rows[0].cloneNode(true); 
    tBody.appendChild(newRow); 
">Add a row</button> 

請注意,您可能需要更新輸入的名稱和值,並做一些其他的整理,上面只顯示了策略。