4

我正在开发一个大型 Web 应用程序项目,之前的设计师倾向于使用 id 作为句柄来形成名称属性之上的字段。

我想这样做的一个优点是通过 Javascript 查找该字段通过 ids 更快。

然而,我现在遇到的一个大问题是 id 具有全局范围。我想将大量数据库列名重构为更标准的命名方案,该方案不包含任何列名前缀来标识该列属于哪个表。这将在那些使用 id 的表单中引起问题,因为字段 id 直接对应于列名。像“zon_name”和“pro_name”这样的列名现在都将只是“name”。这将导致 html 中的非唯一 ID。

所以,在冗长的序言之后,这是我的问题......

在我尝试通过更改所有表单以使用名称属性而不是 id 来解决这个范围界定问题之前,除了查找的速度之外,还有其他原因我没有考虑到原始开发人员可能有使用 id 吗?

我知道这是一篇很长的文章,所以我感谢任何有勇气通读并给出好的答案的人。谢谢!

4

3 回答 3

4

Name 和 id 做不同的事情,虽然有一些重叠,但对于他们所做的最重要的事情,它们是不可互换的。

使用名称

  • 确定将表单提交到服务器时将为数据提供什么键
  • 创建无线电组
  • 从 JS/CSS 当你需要一次引用多个表单控件时(并且在添加类或使用元素类型时不更合适)

使用标识

  • for控件的属性中<label>
  • 当您需要引用特定输入时从 JS/CSS

我想这样做的一个优点是通过 Javascript 查找该字段通过 ids 更快。

不显着(特别是当名称是唯一的时)。

听起来最初的设计者并没有遵循标准约定,而是提出了一些高度依赖 JavaScript 的东西。

于 2011-10-03T22:27:33.750 回答
3

如果您使用表单,则应<label for="aFormElement">与表单元素一起使用。

上的for属性与属性label匹配id,而不是name属性。

因此,您确实需要( 其他外)服务器端代码。idlabel name

于 2011-10-03T22:28:33.980 回答
1

为了快速找到您的元素,您可以id在表单上进行设置。然后对于用于读取它们
的字段,如下所示:name

var form = document.getElementById('theForm'),
    productName = form.productName.value;
于 2011-10-03T22:32:26.150 回答