问题应该是:“带有提供 ID 的 HTML 标签是否会成为全局可访问的 DOM 元素?”
答案是肯定的!
这就是它的工作原理,这也是 W3C 开始引入 ID 的原因。:
解析脚本环境中的 HTML 标记的 ID 成为其对应的 DOM 元素句柄。
然而,Netscape Mozilla 拒绝遵守(对他们来说是侵入性的)W3C 并顽固地继续使用已弃用的 Name 属性来制造破坏,因此破坏了 W3C 引入的唯一 ID 带来的脚本功能和编码便利。
在 Netscape Navigator 4.7 惨败之后,他们的开发人员都去渗透了 W3C,而他们的同事正在用错误的做法和滥用示例取代 Web。强制使用和重用已弃用的 Name 属性 [! 这并不意味着是唯一的] 与 ID 属性相同,这样使用 ID 句柄访问特定 DOM 元素的脚本就会崩溃!
并打破他们做了,因为他们也撰写和发表大量的编码的经验教训和例子[他们的浏览器将不会反正承认]例如 document.all.ElementID.property
,而不是ElementID.property
至少使其效率低下,更多的开销给浏览器的情况下,它没有简单地打破它HTML 域使用相同的标记(现在 [1996-97],已弃用)名称和标准 ID 属性为其提供相同的标记值。
他们很容易地说服了当时压倒性的无知的代码编写爱好者大军,Names 和 ID 实际上是相同的,除了 ID 属性更短,因此比古老的 Name 属性更节省字节并且对编码人员更方便。这当然是谎言。或者 - 在他们取代已发布的 HTML 文章中,说服文章您需要为标签提供名称和 ID,以便脚本引擎可以访问它们。
Mosaic Killers [代号为“Mozilla”] 非常生气,他们认为“如果我们失败了,互联网也应该如此”。
另一方面,崛起的微软非常天真,他们认为他们应该保留已弃用并标记为删除的 Name 属性,并将其视为唯一标识符的 ID,这样他们就不会破坏脚本功能由 Netscape 实习生编码的旧页面。他们大错特错……
并且返回一个 ID 冲突元素的数组集合也不是这个人为问题的解决方案。事实上,它违背了整个目的。
这就是 W3C 变得丑陋并给我们带来诸如document.getElementById
洛可可式这种令人讨厌的洛可可式语法之类的白痴的唯一原因......(......)