加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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

发布时间:2020-12-14 22:48:51 所属栏目:资源 来源:网络整理
导读:我之前在this SO中提到过该文档中IE6 / 7(以及某些版本的Opera)的有趣行为.getElementById可以找到一个元素,其name属性已定义但不是id属性,这样 function f() { document.getElementById("a1").value = ...;}... 实际上适用于这些版本. 通过网络搜索我发现了

我之前在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读