【问题标题】:Closing tag with ID property带有 ID 属性的结束标记
【发布时间】:2012-02-11 19:23:04
【问题描述】:

问题:如果我以这种方式关闭任何 html 标签(包括 id 属性):

<div id="tagid" >...more html
...
</div id="tagid" >

它会影响页面,或者不喜欢它,或者破坏任何 W3C 规则...我该怎么说...它会以任何方式影响吗?

为什么?:只是个人喜好。
我没有在标签旁边写额外的 cmets,而是简单地添加 id 来帮助我知道什么标签被关闭 - 标签以任何方式关闭,所以我猜它不会做任何事情(或者我认为)

PS。仅供参考,我是初学者

【问题讨论】:

  • 哦,顺便说一句,我知道这可能问得太多了,但是您能否添加一个文档来解释为什么或为什么不会破坏我的代码? -避免猜测

标签: html closures w3c doctype w3c-validation


【解决方案1】:

stackoverflow中引用我的另一个答案:

最近不得不对旧代码进行维护,我发现在 div 标签末尾使用 cmets 确实很难注释掉大部分代码,因为 HTML 没有可嵌套的注释标签。所以,我养成了在大块 div 的末尾将 cmets 修改为隐藏 span 的习惯。

<div class="modal fade" id="dialog_edit_group">
    <div class="modal-dialog">
        <div class="modal-content">
            ...HTML content here...
        </div><span title=".modal-content" HIDDEN></span>
    </div><span title=".modal-dialog" HIDDEN></span>
</div><span title=".modal #dialog_edit_group" HIDDEN></span>
<!--
<div class="modal fade" id="dialog_edit_group_OLD">
    <div class="modal-dialog">
        <div class="modal-content">
            ...HTML content here...
        </div><span title=".modal-content" HIDDEN></span>
    </div><span title=".modal-dialog" HIDDEN></span>
</div><span title=".modal #dialog_edit_group_OLD" HIDDEN></span>
-->

我将“HIDDEN”HTML5 属性放在那里,所以如果其他人出于某种原因修改它并添加文本,内容通常会保持隐藏状态。我把它全部大写,这样它会更突出一点,就好像在喊“COMMENT HERE!”。是的,它确实创建了一个现在必须由浏览器维护的 DOM 元素,但在繁重的网站开发过程中付出的代价很小。

使用“end div cmets”这样符合 HTML 标准,给了我更大的可读性,并允许我使用 HTML 注释标签来禁用页面的大块以帮助开发。也许它对其他人也有用。

【讨论】:

    【解决方案2】:

    不,这是无效的。

    虽然它可能不会破坏您的代码,但它可以!

    你应该只使用 cmets

    &lt;/div&gt; &lt;!-- closing main content div --&gt;


    检查后,这个

    &lt;div&gt;&lt;/div id="tagid" &gt;

    验证器中断

    http://validator.w3.org/#validate_by_input


    虽然没有特别提到非法,但 HTML 规范只提到 attributes 出现在开始标记中:

    元素可能具有关联的属性,称为属性,这些属性可能 有值(默认情况下,或由作者或脚本设置)。 属性/值对出现在元素的最后一个“>”之前 开始标签。任意数量的(合法的)属性值对,由 空格,可能出现在元素的开始标签中。

    http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2

    【讨论】:

    • FWIW,HTML5 规范确实说这是一个错误。具体来说,它说“当带有属性的结束标记标记发出时,这是一个解析错误。”
    • 是的,完全同意 cmets 的观点,虽然它可能是可能的,但它违反了 HTML5 规范,因此可能会起作用,但如果特定浏览器对渲染有严格要求,将来可能会在未知点中断。如果通过 JQuery 添加元素例如 your html 你最好使用静态 HTML 或运行时的打开和关闭注释进行渲染,这是完全有效的可解析
    【解决方案3】:

    在 HTML/XML 中,属性只能放在元素的开始标记中。您正在生成无效的 html。

    【讨论】:

      【解决方案4】:

      这里是如何关闭 div:

      <div id="tagid" ></div>
      

      如果你想识别标签的结束位置,你可以简单地添加评论:

      <div id="tagid" >
         ...
      </div><!-- Tagid Ends here -->
      

      【讨论】:

        猜你喜欢
        • 2011-04-05
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        相关资源
        最近更新 更多