您问“有多糟”。所以充实@RobertKoritnik(完全正确)的答案...
该代码不正确。错误不会以灰色阴影出现。该代码违反标准,因此不正确。这将使验证检查失败,应该这样做。
就是说,目前市场上没有浏览器会抱怨它,或者对此有任何问题。浏览器有权投诉该浏览器,但是任何浏览器的当前版本都没有。这并不意味着将来的版本可能不会对此代码造成不良影响。
您尝试使用该ID作为CSS或javascript中的选择器的行为是无法猜测的,并且可能因浏览器而异。我想可以做一个研究,看看每个浏览器对此有何反应。我认为在最好的情况下,它将像“ class =”一样对待它,并选择它们的列表。(不过,这可能会混淆JavaScript库-如果我是jQuery的作者,我可能已经优化了选择器代码,因此,如果您使用以“#”开头的选择器来找我,那么我希望得到一个对象,并得到一个清单可能会让我完全失望。)
它还可能选择第一个,或者可能选择最后一个,或者都不选择,或者完全使浏览器崩溃。没有尝试就无法告诉。
那么,“有多糟糕”完全取决于特定浏览器严格执行HTML规范的方式,以及在遇到违反该规范时的行为。
编辑:我只是碰巧今天遇到了这个。我从各种类型的实体上的搜索表单中提取各种组件,以为该站点生成一个很大的大型多合一报告实用程序,我将远程页面的搜索表单加载到隐藏的div中,并将其放入我的选择适当的实体类型作为报告源时的报告生成器。因此,该表单有一个隐藏版本,并且在报告生成器中显示了一个版本。在所有情况下,随附的JavaScript均按ID指代元素,页面上现在有两个元素-隐藏的元素和显示的元素。
jQuery似乎在做的是选择我第一个,在所有情况下,这都是我不想要的。
我正在通过编写选择器来指定要在其中获取字段的页面区域(即:$('#containerDiv #specificElement'))来解决此问题。但是您的问题有一个答案-Chrome上的jQuery在遇到这种规范违规时肯定表现出特定的方式。