在我的项目中,我有提交和评论,每个都有ID。目前,ID只是数字,与其数据库ID相对应。一切都运行正常,但当我通过W3验证器运行时,我收到错误:
value of attribute "id" invalid: "1" cannot start a name
我想我可以在所有id之前加上某种字符串但是每当我在JQuery或PHP中使用或操作id时我都必须在使用之前做id.replace('string','')它。这看起来相当麻烦。有什么建议吗?
答案 0 :(得分:16)
违反了W3C规范。
您在问题中注意到了这一点,除了HTML5
这对SEO不利。
搜索引擎优化的HTML元素ID应该反映所标识元素的内容。查看Meitar Moscovitz的 How To Compose HTML ID and Class Names like a Rockstar 。它提供了这个概念的良好概述。
可能存在服务器端脚本问题。
回到我第一次开始使用ASP classic编程时,我不得不通过类似Request.Form("some_id")
的语法访问提交的表单字段。但是,如果我执行Request.Form(1)
,它将返回表单集合中第二个字段的值,而不是Id等于1的元素。这是使用集合的非常标准的行为。它也与javascript类似,并且可能使您的客户端脚本编写更加复杂。
答案 1 :(得分:6)
我建议您使用前缀“comment-ID”或“post-ID”。
如果您需要JavaScript中的ID,则必须id.substring(8)
(对于“评论 - ”)
答案 2 :(得分:4)
HTML 5规范解除了这一限制。如果您担心有效性,可以考虑将DTD更改为HTML5。
答案 3 :(得分:2)
如果您正在操作元素,那么您可以使用$(this).jQueryOperation()
- 因此您可以拥有前缀而无需替换任何内容!
答案 4 :(得分:0)
您需要的最佳方式是为您的课程添加前缀,我的意思是项目 - x
,x
是您需要的数字。
但是根据我的个人经验,最好为你的元素使用类,并且如果项目在页面中不是唯一的,你必须使用类