我正在使用Babel/ES6构建一个应用程序。 我想为其创建一个仅查看版本,并禁用所有表单元素,因此我执行了以下操作:
let form = document.getElementById('application-form')
let elements = form.elements
我本来期望可以这样做,而不是使用普通的 for
循环(虽然它也可以工作):
elements.forEach((el) => {
el.disabled = true
})
但我得到了 TypeError: elements.forEach is not a function
奇怪的是,如果我在Chrome开发者控制台中使用console.log(elements)
,它看起来像一组input
对象。它不会以Object
表示法显示为对象,并且所有键都是整数。我想这是某种伪数组,但我甚至不知道如何找出答案。
编辑:简短的回答是这不是一个数组,而是HTMLCollection。请参见为什么节点列表没有forEach?
*更新*
根据这个答案,nodelist
现在有了forEach
方法!
console.log(typeof elements)
的结果是什么? - Hackerman[...elements].forEach
。 (翻译者注:该写法是将类数组对象转化为真正的数组,并调用forEach
方法对每个元素执行相同的操作。) - Sterling Archerobject
。但在开发控制台中看起来像一个数组。看起来实际上是一个HTMLCollection。 - inostia