如果你有一个名为=" document"的表单,JS document.getElementById不是一个函数。

时间:2016-10-27 08:07:38

标签: javascript forms variables

我的网站出现了一个奇怪的问题。突然,在页面上我收到了JS错误document.getElementById is not a function。问题是我有一个name="document"的表单。

似乎如果表单设置了属性name,则会设置具有相同名称的Javascript中的变量。

我在哪里可以找到相关的规格?

2 个答案:

答案 0 :(得分:4)

行为在HTML 5规范的6.3.3 Named access on the Window object部分中定义:

子浏览上下文名称属性集由browsing context names child browsing context active documentsupports named properties组成,其supported property names的名称不是空字符串,省略重复项。 Window界面tree orderchild browsing context name property set随时由<a>中的<applet>组成,忽略以后的重复:

答案 1 :(得分:0)

好像你是对的。 Document支持命名属性。

@Andreas还指出了一个提及此问题的资源:http://w3c.github.io/html/browsers.html#named-access-on-the-window-object

6.3.3。 Window对象上的命名访问:“Window接口支持命名属性。支持的属性名称随时由树形顺序组成,忽略以后的重复项:...所有a,applet的名称内容属性的值,活动文档中具有非空名称内容属性的,area,embed,form,frameset,img和object元素......“ - Andreas

检查一下: https://html.spec.whatwg.org/multipage/dom.html#dom-document-forms

  

Document接口支持命名属性。支持   任何时刻Document对象文档的属性名称都包含在内   以下,根据贡献的元素按树顺序排列   它们,忽略以后的重复项,以及来自id属性的值   在相同元素之前来自name属性的值之前   贡献两者:

     

所有applet的名称内容属性的值,被暴露的嵌入,   form,iframe,img和具有非空的公开对象元素   名称内容属性,位于文档树中,文档为   他们的根;

     

所有applet和公开的id内容属性的值   具有非空id内容属性且在其中的对象元素   以文档为根的文档树;和

     

所有img元素的id内容属性的值   非空id内容属性和非空名称内容   属性,并且位于以文档为根的文档树中。

     

要确定Document的命名属性名称的值,   用户代理必须使用以下步骤返回获得的值:

     

让元素成为名称为name的命名元素列表   在以Document为根的文档树中。

     

根据定义,至少会有一个这样的元素。

     

如果元素只有一个元素,那个元素就是iframe   元素,iframe元素的嵌套浏览上下文不是   null,然后返回元素嵌套的WindowProxy对象   浏览环境。

     

否则,如果元素只有一个元素,则返回该元素。

     

否则返回一个以Document节点为根的HTMLCollection   过滤器仅匹配名称为name的命名元素。

     

具有名称名称的命名元素,用于上述目的   算法,是那些:

     

applet,public embed,form,iframe,img或者公开的对象元素   具有名称内容属性,其值为name或applet或   具有id内容属性其值的公开对象元素   是具有id内容属性值的名称或img元素   是名称,并且具有非空名称内容属性   也。如果没有嵌入或对象元素,则称其被暴露   另外,对象元素也是暴露对象的祖先   要么没有显示其后备内容,要么没有对象或嵌入   后代。