【问题标题】:Is it always bad practice to start an ID with a number? (CSS)以数字开头的 ID 总是不好的做法吗? (CSS)
【发布时间】:2011-07-19 00:16:28
【问题描述】:

在我的项目中,我有提交和 cmets,每个都有一个 ID。目前,ID 只是数字并对应于它们的数据库 ID。一切正常,但是当我通过 W3 验证器运行它时,我得到了错误:

value of attribute "id" invalid: "1" cannot start a name

我想相反,我可以在所有 id 之前加上某种字符串,但是每当我在 JQuery 或 PHP 中使用或操作 id 时,我必须在使用之前执行 id.replace('string', '')它。这似乎相当麻烦。有什么建议吗?

【问题讨论】:

  • 如果它在你使用的 HTML 风格中是无效的,那比坏习惯更糟糕。它只是无效的。

标签: php jquery html css


【解决方案1】:

满足您需要的最佳方式是为您的班级添加前缀,我的意思是像 item-xx 是您需要的数字。

但从我个人的经验来看,你的元素最好使用类,而且你知道如果页面中的项目不是唯一的,你必须使用类

【讨论】:

    【解决方案2】:

    是的,使用数字作为 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 经典中编程时,我不得不通过像 Request.Form("some_id") 这样的语法来访问提交的表单字段。但是,如果我执行Request.Form(1),它将返回表单集合中第二个字段的值,而不是 Id 等于 1 的元素。这是处理集合的非常标准的行为。它也与 javascript 类似,并且可能会使您的客户端脚本更难以维护。

    【讨论】:

    • 在您的表单示例中,您不是只能通过 Request.Form("1") 访问它吗? - 显然不是这里的重点:)
    【解决方案3】:

    HTML 5 规范解除了这一限制。如果您担心有效性,您可以简单地考虑将 DTD 更改为 HTML5。

    http://www.w3.org/TR/html5/elements.html#the-id-attribute

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我建议你使用前缀“comment-ID”或“post-ID”。

        如果你需要 JavaScript 中的 id,你只需要id.substring(8) (for "comment-")

        【讨论】:

        • 显然只在您的 HTML 中添加前缀
        • @fazo:这些不是变量名。
        • @fazo:你能澄清一下吗?我也对 CSS 命名约定很好奇。我应该使用 camelCase、下划线、破折号分隔的单词还是全部小写?
        • @LekisS:我过去使用过element.id.split("-").pop(),而不是substring——稍微长一点,但不需要对8进行硬编码。
        • @Jon:哦,你可以使用你喜欢的。我认为 substring() 更快,但我不确定 ;)
        猜你喜欢
        • 2011-09-26
        • 2013-08-11
        • 2019-02-12
        • 1970-01-01
        • 2012-04-11
        • 2016-09-03
        • 1970-01-01
        • 2012-08-31
        • 2019-12-30
        相关资源
        最近更新 更多