在javascript中,这是一个有效的构造吗?:document.name.name.value?

在javascript中,这是一个有效的构造吗?:document.name.name.value?,javascript,html,dom,Javascript,Html,Dom,以下是表格: <form name=fname ... <input name=iname value="" ... 这合法吗?我以为你必须用getElementsByName来做这件事。这很有效,只是我从来没见过有人这样做。这是不是碰巧发生在工作中的事情之一。。。现在?更新 根据WHATWG 窗口对象支持命名属性。窗口对象窗口在任何时刻支持的属性名称包括以下内容,…对于所有小程序,嵌入,表单,框架集,img,以及对象元素 根据W3CDOM2HTML规范 以下元素名称属性可

以下是表格:

<form name=fname ...
   <input name=iname value="" ...
这合法吗?我以为你必须用
getElementsByName
来做这件事。这很有效,只是我从来没见过有人这样做。这是不是碰巧发生在工作中的事情之一。。。现在?

更新 根据WHATWG

窗口对象支持命名属性。窗口对象窗口在任何时刻支持的属性名称包括以下内容,…对于所有
小程序
嵌入
表单
框架集
img
,以及
对象
元素


根据W3CDOM2HTML规范

以下元素名称属性可以作为文档对象的属性引用:
锚定
小程序
按钮
表单
框架
iframe
输入
映射
对象
参数
选择
,以及
文本区域


这种引用方法是标准的,但通常不鼓励使用。避免通过
name
属性直接引用DOM属性或窗口对象的几个原因是:变量阴影、无意中作用于窗口对象的范围、主要浏览器不一致等。有关应避免的原因的详细信息,请参阅和

此代码段显示了一种稳定的标准方式,可以使用表单名称作为引用,也可以使用前面提到的引用表单名称

一小条
var val1=document.forms.fname.elements.iname.value;
控制台日志(val1);
var val2=fname.iname.value;
console.log(val2)


他们不是询问
文档表单
集合,而是询问直接在
文档
对象上按名称访问表单。此片段显示了使用表单名称作为引用和前面提到的引用的更好方法。您确定这是非标准的吗?@squint-您完全正确。这是完全标准的。它在HTML5规范的一节中进行了描述。向下滚动到“文档接口支持命名属性”的开头部分。@squint也找到了规范,并相应地进行了更新。它是标准的,尽管很混乱。是的,您可以使用name属性来实现这一点。
document.forms.fname.elements.iname.value
是更好的样式。请查看并
var val = document.fname.iname.value;