XHTML w3c 验证错误“引用不存在的 ID”xxxxx“”

XHTML w3c validation error "reference to non-existent ID "xxxxx""

提问人:Jitendra Vyas 提问时间:11/10/2010 最后编辑:Jitendra Vyas 更新时间:11/10/2010 访问量:3512

问:

对于这部分代码

<label for="gender">I am:</label>
<select class="select" name="sex" id="sex">
  <option value="0">Gender:</option>
  <option value="1">Female</option>
  <option value="2">Male</option>
</select>

W3C 验证器将此错误引用指向不存在的 ID“gender”

如何解决这个问题?

编辑

也要到达这里

引用不存在的 ID“birthday”

<label for="birthday" class="birthday">Birthday:</label>

<div class="field_container"> 

<select name="birthday_month" id="birthday_month" class="">
<option value="-1">Month:</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
<option value="3">Mar</option>
</select> 
<select id="birthday_day" name="birthday_day">
<option value="-1">Day:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select id="birthday_year" name="birthday_year">
<option value="-1">Year:</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>

</select>
</div>
XHTML HTML 可访问性 W3C-验证

评论

0赞 jwueller 11/10/2010
第二个示例需要像更正第一个示例一样进行修复(通过几个答案):元素的属性需要引用其他元素的属性。您没有等于“birthday”的属性。您需要将属性设置为文档中某处存在的 id(如“birthday_month”“birthday_year”)。for<label>ididfor
0赞 Jitendra Vyas 11/10/2010
@elusive - 但我有 3 个不同的生日 ID
0赞 jwueller 11/10/2010
gear-solid:然后选择一个。不能在属性中使用多个 ID。for
0赞 Zhaph - Ben Duguid 11/10/2010
齿轮坚固 查看我更新的答案;)

答:

2赞 Zhaph - Ben Duguid 11/10/2010 #1

更改元素中属性的值:forlabel

<label for="sex">I am:</label>

编辑以添加:

第二个示例更复杂,因为您为三个输入字段使用一个标签。

我推荐如下:

将以下 CSS 规则添加到您的网站:

.hidden_label {
  font-size:1px;
  height:0;
  line-height:0;
  margin:0 0 0 -1000px;
  text-indent:-9999px;
}

然后更新您的表单:

<div class="birthday">Birthday:</div>

<div class="field_container"> 

<label for="birthday_month" class="hidden_label">Birthday Month</label>
<select name="birthday_month" id="birthday_month" class="">
  <option value="-1">Month:</option>
  <option value="1">Jan</option>
  <option value="2">Feb</option>
  <option value="3">Mar</option>
</select> 

<label for="birthday_day" class="hidden_label">Birthday Day</label>
<select id="birthday_day" name="birthday_day">
  [...]
</select>

<label for="birthday_year" class="hidden_label">Birthday Year</label>
<select id="birthday_year" name="birthday_year">
  [...]
</select>

您想做两件事:

为您的用户提供一个视觉上吸引人的表单,然后为那些使用辅助技术的用户提供一些额外的帮助程序。使用上面定义的 CSS 类,可以确保当用户移动到表单元素时,屏幕阅读器仍能看到元素并读取其内容,同时隐藏可视网站中的所有其他标签。

1赞 meder omuraliev 11/10/2010 #2

没有 或 .你正在使用性。要么使用性,要么使用性别。保持一致。id="gender"name="gender"

评论

0赞 Jitendra Vyas 11/10/2010
谢谢,在第二个例子中该怎么办?