Javascript 如何在维护连续元素ID的同时添加和删除表行?

Javascript 如何在维护连续元素ID的同时添加和删除表行?,javascript,html,dom,html-table,Javascript,Html,Dom,Html Table,我正在开发我一直在开发的CMS的后端 我有一个HTML表,我希望用户能够添加和删除其中的行。每行将包含各种用户输入(文本框、复选框..)。然后,当用户完成后,它将保存在数据库中 我想知道最好的方法是什么 我猜桌子应该是这样的: <table> <tr> <td><input name="name_1" type="text" /></td> <td><input name="address_1" type="text"

我正在开发我一直在开发的CMS的后端

我有一个HTML表,我希望用户能够添加和删除其中的行。每行将包含各种用户输入(文本框、复选框..)。然后,当用户完成后,它将保存在数据库中

我想知道最好的方法是什么

我猜桌子应该是这样的:

<table>
<tr>
<td><input name="name_1" type="text" /></td>
<td><input name="address_1" type="text" /></td>
</tr>
<tr>
<td><input name="name_2" type="text" /></td>
<td><input name="address_2" type="text" /></td>
</tr>
<tr>
<td><input name="name_3" type="text" /></td>
<td><input name="address_3" type="text" /></td>
</tr> 
</table>

我在想象我会有一个噩梦,给每行中的每个元素一个id,如果用户删除第2行会发生什么。。。之后的所有id都需要重新排序

如何最好地使用JavaScript添加和删除行以及维护顺序id?

为每个
指定一个唯一的
id=…
属性,以便您可以唯一地标识行。然后向表中添加一列,该列包含每行的顺序ID。当由于行已更改而需要重新排序时,请更新列,但不要更新
ID
属性。

为每行
指定一个唯一的
ID=…
属性,以便可以唯一地标识行。然后向表中添加一列,该列包含每行的顺序ID。当由于行已更改而需要重新排序时,请更新列,但不要更新
ID
属性。

您应该改用
name=“address[]”
等。这样,当您发布它时,服务器上的处理文件将收到一个数组,该数组包含HTML代码中相应的
出现顺序中的所有值

(我知道PHP会自动执行此操作:将以
[]
结尾的输入
name
转换为数组。不知道其他语言)

您应该使用
name=“address[]”
等。这样,当您发布它时,服务器上的处理文件将收到一个数组,该数组包含HTML代码中相应的
出现顺序中的所有值

(我知道PHP会自动执行此操作:将以
[]
结尾的输入
name
s转换为数组。不知道其他语言)

您不想这样做。 您要做的是实际生成一个唯一的ID,一个在页面上完全唯一的ID,不要尝试在数据库中维护该ID

然后,您应该做的是,在提交页面时,获取这些提交的ID,然后使用auto_increment让数据库对ID进行asign。如果需要复合键,则可以使用复合键

然后,当您再次加载表单时,例如为了进行编辑,您需要使用数据库中的新ID

我使用AJAX实现了类似的功能。我为我的每个表单元素使用了random.uniqueID('prefix_'),然后在提交时,我将auto_增量分配给prefix_整数,并返回一个JSON对象。然后,我可以在对象上循环,并确保我的表单使用正确的ID是最新的

这样解释应该很简单

你不想这样做。 您要做的是实际生成一个唯一的ID,一个在页面上完全唯一的ID,不要尝试在数据库中维护该ID

然后,您应该做的是,在提交页面时,获取这些提交的ID,然后使用auto_increment让数据库对ID进行asign。如果需要复合键,则可以使用复合键

然后,当您再次加载表单时,例如为了进行编辑,您需要使用数据库中的新ID

我使用AJAX实现了类似的功能。我为我的每个表单元素使用了random.uniqueID('prefix_'),然后在提交时,我将auto_增量分配给prefix_整数,并返回一个JSON对象。然后,我可以在对象上循环,并确保我的表单使用正确的ID是最新的


这样解释应该很简单

为什么ID需要按顺序排列?您是否使用了jQuery之类的JavaScript库,它可以返回行列表,如果需要访问第x行,您可以从中访问该行

我想如果你试图在中间删除(或添加)行时迭代地更新IDS,就会遇到同步问题。


你可能会考虑DouweM的建议,如果你使用的是服务器端语言,可以很容易地用[]中的ID来构建数组。另一个选项是为每个ID分配GUID,或者从备份数据库中的相关行分配它们的主键。

为什么ID需要顺序?您是否使用了jQuery之类的JavaScript库,它可以返回行列表,如果需要访问第x行,您可以从中访问该行

我想如果你试图在中间删除(或添加)行时迭代地更新IDS,就会遇到同步问题。

你可能会考虑DouweM的建议,如果你使用的是服务器端语言,可以很容易地用[]中的ID来构建数组。另一个选项是为每个ID分配GUID,或者从备份数据库中的相关行分配它们的主键