用数字作为ID的开头是否总是不好的做法?(CSS)

8
在我的项目中,我有提交和评论,每个都有一个ID。目前,这些ID只是数字,并对应于它们的数据库ID。现在一切都正常,但当我通过W3验证器运行它时,我收到以下错误:
"value of attribute "id" invalid: "1" cannot start a name"
我想,我可以用某种字符串来替换所有ID,但是每当我在JQuery或PHP中使用或操作ID时,我必须先执行id.replace('string', ''),这似乎相当麻烦。你有什么建议吗?

如果在你使用的HTML版本中无效,那么它不仅是一种糟糕的实践,而且是无效的。 - BoltClock
5个回答

16

使用数字作为HTML元素ID是不良的做法。

  1. 它违反W3C规范。
    您在问题中已经指出了这一点,除了HTML5规范外,其他所有HTML规范都适用。

  2. 它对SEO有害。
    搜索引擎优化的HTML元素ID应该反映所识别元素的内容。请参阅Meitar Moscovitz的文章《How To Compose HTML ID and Class Names like a Rockstar》。它提供了对此概念的很好概述。

  3. 可能会存在服务器端脚本问题。
    早些时候,当我开始编写ASP classic程序时,我必须通过类似于Request.Form("some_id")这样的语法访问提交的表单字段。但是,如果我使用Request.Form(1),它将返回表单集合中第二个字段的值,而不是Id等于1的元素。这是处理集合的一个标准行为。在javascript中也是如此,并且可能使您的客户端脚本更难维护。


在你的表单示例中,你只需通过 Request.Form("1") 访问它,不是这里的重点,显然 :) - Jim Geurts

6
我建议您使用前缀“comment-ID”或“post-ID”。
如果您需要在JavaScript中获取id,则只需使用id.substring(8)(对于“comment-”)即可。

显然,只需在您的HTML中添加前缀。 - Thomas Menga
@fazo:这些不是变量名。 - Jon
@LekisS:我过去使用的是element.id.split("-").pop()而不是substring——这个方法稍微有点长,但是不需要硬编码8就可以工作。 - Jon
@Jon:哦,你可以使用你喜欢的。我认为substring()更快,但我不确定 ;) - Thomas Menga
@LekisS:这不是关于我喜欢什么,或者哪种方法更快(你能注意到多出来的1毫秒吗?)。在我看来,这将是“更好的代码”。 - Jon
显示剩余2条评论

4

2

如果您正在操作元素,则只需使用$(this).jQueryOperation() - 因此,您可以拥有前缀而无需替换任何内容!


0
最好的方法是为您的类添加前缀,我的意思是像item-x这样的东西,其中x是您需要的数字。
但从我的个人经验来看,最好为您的元素使用类,如果该项在页面中不唯一,则必须使用类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接