我在链接到网页的两个不同部分的两个链接上遇到了一些麻烦,一个位于页面下方而另一个位置,我已经完成了以下操作:
<a class="nav-link" href="#portfolio">Portfolio</a>
<a class="nav-link" href="#cv">CV</a>
...
...
<a id="portfolio"></a>
...
...
...
<a id="cv"></a>
似乎只是部分工作。点击投资组合链接让我进入投资组合部分,但是cv链接不起作用。但是,一旦我改变了cv链接,它就起作用了:
<a class="nav-link" href="#portfolio">Portfolio</a>
<a class="nav-link" href="#info">CV</a>
...
...
<a id="portfolio"></a>
...
...
...
<a id="info"></a>
我知道您无法使用数字创建ID,但是对数字/长度的最低要求也是如此吗?
答案 0 :(得分:2)
至少应该是一个字母。
从MDN:
查看此处的规则
- 此属性的值是不透明的字符串:这意味着网络作者不得使用它来传达任何信息。特殊含义,例如语义,不得从字符串中派生出来。
- 此属性的值不得包含空格。浏览器会处理包含空格的不合格ID,就好像空格是ID的一部分一样。与允许以空格分隔的值的class属性相比,元素只能通过id属性定义一个ID。请注意,一个元素可能有多个ID,但其他元素应该通过其他方式设置,例如通过与元素的DOM接口连接的脚本。
- 使用ASCII字母和数字以外的字符,'_',' - '和'。'可能会导致兼容性问题,因为HTML 4中不允许这样做。虽然HTML 5中已经取消了这一限制,但ID应该以兼容字母开头。
同时检查HTML5 specs:
id属性指定其元素的唯一标识符(ID)。 [DOM]
该值必须在元素的主子树中的所有ID中唯一,并且必须至少包含一个字符。该值不得包含任何空格字符。
ID可以采取什么形式没有其他限制;特别是,ID可以只包含数字,以数字开头,以下划线开头,仅包含标点符号等。
元素的唯一标识符可用于各种目的,最明显的是作为使用片段标识符链接到文档的特定部分的方法,作为在编写脚本时定位元素的方法,以及作为样式的方式来自CSS的特定元素。
标识符是不透明的字符串。不应从id属性的值派生特定含义。
答案 1 :(得分:1)
id
没有最低长度要求,除非它必须是非空的。
但是有一个限制,即在单个HTML文档中不能有2个以上具有相同id
的元素。
短id
s更容易发生碰撞。
请注意,脚本(例如某些小部件插件)可以动态创建带有ID的元素,或更改元素的ID。也许这发生在你的页面上。
您可以使用以下bookmarklet来确定您网页上是否已存在id=='cv'
元素:
javascript:alert(document.getElementById("cv"));
如果没有这样的元素,它应该输出null
,如果有的话,它应该输出[object ...]
。
或者更一般:
javascript:alert(document.getElementById(prompt("enter id: "))==null ? "No elements with such id" : "There is an element with such id");