Javascript 元素<;a>;不允许作为元素的子级<;dl>;在此上下文中-验证程序错误

Javascript 元素<;a>;不允许作为元素的子级<;dl>;在此上下文中-验证程序错误,javascript,html,validation,Javascript,Html,Validation,在HTML5(实验性)windows-1252编码上运行w3Validator之后, 我犯了以下错误- 第11行第20列:元素a不是 允许作为元素dl的子元素在此 上下文(b)抑制进一步的错误 从这个子树中。) 如果定义列表有一个非常具体的结构 <dl> <dt>Definition title<dt> <dd>Definition description </dd> <dt><a href='#'&

在HTML5(实验性)windows-1252编码上运行w3Validator之后, 我犯了以下错误-

第11行第20列:元素a不是 允许作为元素dl的子元素在此 上下文(b)抑制进一步的错误 从这个子树中。)


如果
定义列表有一个非常具体的结构

<dl>
  <dt>Definition title<dt>
  <dd>Definition description </dd>

  <dt><a href='#'>Definition title</a><dt>
  <dd>Definition description </dd>

  <dt>Definition title<dt>
  <dd><a href='#'>Definition description</a></dd>
</dl>

定义标题
定义说明
定义说明
定义标题
实际上,您可以将链接放在DT或DD中的唯一位置。如果我没记错,DD被视为块级元素,在任何情况下都不会放在链接中

编辑:正如@Mathias Bynens在评论中指出的,只有DT和DD元素可以作为DL的直接子元素出现


HTML5也允许在块级元素周围放置内联标记,这基本上是一个问题。约定是您不应该将块元素放在内联元素中,
标记是内联的,
(以及应该在其内部的
元素)是块。您所做的类似于在
周围放置一个
元素,这显然是不对的

您问题的“答案”是将
标记放在单个
标记中,并且在定义列表中只包含定义术语和定义标记


忽略:未意识到您正在尝试验证HTML 5。在这种情况下,答案是除了
之外,你不能把其他任何东西作为

的直接子项。到目前为止,所有发布的答案都是错误的

锚(或<代码> 并将您的代码验证为HTML5。(此代码一直在浏览器中工作,只是在HTML5之前无效。)


真实的原因无法验证(因此,您的问题的答案)非常简单:
元素只能作为
元素的直接子元素出现。

您读错了。它说
不能是
的子元素,并且您没有向我们展示周围的代码。HTML5允许块级锚,因此您的解释没有任何意义。请看。实际上我是试图获得块悬停效果…如果我单独放置它们,jquery的动画会出现一些中断。对不起,没有看到OP说的HTML5!在这种情况下,可能是因为OP没有坚持
格式。你的最后一段不正确。你可以将整个
放在锚(
)中如果您愿意的话。它失败的真正原因是您不能使用
元素,只能将
元素作为直接子元素。@Mathias Bynens感谢您的提醒,我已经更正了我的答案:)
<div id="something">
    <dl>
        <a href="#link1"><dt>title1</dt><dd>Sub heading1</dd></a>
        <a href="#link2"><dt>title2</dt><dd>Sub heading2</dd></a>
        <a href="#link3"><dt>title3</dt><dd>Sub heading3</dd></a>
        <a href="#link4"><dt>title4</dt><dd>Sub heading4</dd></a>
        <a href="#link5"><dt>title5</dt><dd>Sub heading5</dd></a>
        <a href="#link6"><dt>title6</dt><dd>Sub heading6</dd></a>
    </dl>
</div>
<dl>
  <dt>Definition title<dt>
  <dd>Definition description </dd>

  <dt><a href='#'>Definition title</a><dt>
  <dd>Definition description </dd>

  <dt>Definition title<dt>
  <dd><a href='#'>Definition description</a></dd>
</dl>
a {
  display: block;
}
<a href="#">
 <h1>Foo</h1>
 <p>Bar</p>
</a>