关于 HTMLCollections 和命名属性的问题,继续使用吗?

chr*_*ahl 5 html javascript standards dom htmlcollection

当引用 HTML 表单中的元素时,我经常使用 name 属性的名称/值。所以,如果表单的名称是“form01”,我指的是表单的书写document.forms.form01。这是一个例子:

let title = document.forms.form01.title;
console.log(title.value);
Run Code Online (Sandbox Code Playgroud)
<form name="form01">
  <input type="text" name="title" value="Hello World">
</form>
Run Code Online (Sandbox Code Playgroud)

这是一个 HTMLCollection,但在DOM 标准 #interface-htmlcollectiondocument.forms的文档中,它没有提到在这样的集合上直接使用名称作为属性(我认为它被称为“命名属性”)的可能性 -就像我用来指代表单元素时一样。相反,文档实际上指出这是“历史文物”——那么,我应该避免使用它吗?document.forms.form01

你能帮我找到这方面的文档吗?要么它是一个可以使用的(好)功能,要么它是应该避免的东西。

phe*_*nil 2

如果它没有被标记为已弃用或过时的功能,您绝对可以继续使用它!

\n

MDN Web 文档上有关HTMLCollection 的其他详细信息如下:

\n
\n

HTMLCollection接口表示元素(按文档顺序)的通用集合(类似于 array 的对象(按文档顺序),并提供用于从列表中进行选择的方法和属性。

\n
\n
\n

至于 HTMLCollection 中的命名属性(正如@Kaiido指出的),本节指出:

\n
\n

支持的属性名称是以下步骤返回的列表中的值:

\n
    \n
  1. result为空列表。

    \n
  2. \n
  3. 对于集合表示的每个元素 ,按树顺序

    \n
      \n
    1. 如果elementID不在result中,则将元素\xe2\x80\x99s ID附加到result

      \n
    2. \n
    3. 如果element位于HTML 命名空间,并且属性name既不是空字符串也不是result中,则将元素\ xe2\x80\x99s属性附加到resultname

      \n
    4. \n
    \n
  4. \n
  5. 返回结果

    \n
  6. \n
\n
\n

另请注意,NodeList与 HTMLCollection属于同一部分(旧式集合)。请参阅MDN Web 文档上的NodeList

\n
\n

前面提到的[LegacyUnenumerableNamedProperties](正如@Kaiido指出的)仅表明命名属性是不可枚举的(即, usingArray.from将仅返回索引项)。

\n

  • [LegacyUnenumerableNamedProperties] 本身并不表明该接口支持命名属性。[本段](https://dom.spec.whatwg.org/#ref-for-dfn-supported-property-names)确实如此。 (2认同)