元素a不得作为按钮元素的后代出现

时间:2014-07-19 05:32:15

标签: html5 anchor w3c-validation

请帮忙,            在验证我的html5模板时,我通过http://validator.w3.org/收到错误消息。我收到消息“元素不能作为按钮元素的后代出现”。我无法理解这一点。谁能帮我解决这个问题呢?

这是我的代码---

<div class="post-response btn-group btn-group-lg">
   <a href="#"><button type="button" class="btn btn-default"><i class="fa fa-comment"> 5  Comments</i></button></a>
   <a href="#"><button type="button" class="btn btn-default"><i class="fa fa-heart"> 5 Likes</i></button></a>
</div>

2 个答案:

答案 0 :(得分:8)

错误消息已经回答了您的疑问 根据HTML5规范文档

您可以将任何元素嵌套在<a>中,但以下内容除外:

<a>

audio>(如果存在controls属性)

<button>

<details>

<embed>

<iframe>

<img>(如果存在usemap属性)

<input>(如果type属性不处于隐藏状态)

<keygen>

<label>

<menu>(如果type属性处于工具栏状态)

<object>(如果存在usemap属性)

<select>

<textarea>

<video>(如果存在controls属性)

所以你需要使用一些css来设计一个Button(或者有很多方法),而不是在Button元素中添加a

答案 1 :(得分:4)

W3C验证器的常见错误是:

  

元素按钮不得显示为元素

的后代

这对你的问题更有意义,因为你有一个按钮是一个锚的后代。

通常,您可以通过简单地设置锚标记样式或将按钮放在表单元素中来解决问题:

<form style="display: inline" action="http://www.example.com/" method="get">
  <button>Some Call to Action</button>
</form>

但是在你的情况下,我不认为你甚至需要锚点,因为你没有使用HTML连接任何地方(如果你使用JavaScript附加事件,你可以简单地将这些事件附加到按钮而不是锚。