javascript – Document.getElementById()返回名称等于id指定的元素

前端之家收集整理的这篇文章主要介绍了javascript – Document.getElementById()返回名称等于id指定的元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我之前在this SO中提到过该文档中IE6 / 7(以及某些版本的Opera)的有趣行为.getElementById可以找到一个元素,其name属性已定义但不是id属性,这样

function f() {
    document.getElementById("a1").value = ...;
}
...

实际上适用于这些版本.

通过网络搜索我发现了Chris Bloom的this bug report,其中名为Milo van der Leij的用户指出了以下内容(由他在this w3c spec中提到):

在他们的辩护中:“id和name属性共享相同的名称空间.”

id和name属性共享同一名称空间是什么意思?为什么这个条件足以让IE6 / 7 / Opera在他们的JS引擎中实现这种行为?

最佳答案
术语“相同名称空间”意味着名称和ID不是完全分开的.您可以在一个特定对象上使用相同的名称和ID,但不能在一个对象上使用name =“foo”而在另一个对象上使用id =“foo”.这造成了冲突.

这就是那些浏览器决定实现的方式.每个元素都有一个全局变量,其id包含dom元素.这就是他们实施的方式.它不是标准的,它不是在更现代的浏览器中完成的方式(除了一些向后兼容性).

对要检索的任何DOM元素使用id值.在已过帐表单中使用名称值进行服务器标识.

如果您不在一个对象上使用id而在另一个对象上使用相同的名称,那么您的代码名称和ID之间不会发生冲突,并且通常不会给予特定元素相同的名称和ID.

原文链接:https://www.f2er.com/html/425900.html

猜你在找的HTML相关文章