下面是控制台的一些输出,说明了我的问题
var a=document.createElement("select"); <ENTER>
undefined
a.appendChild(document.createElement("option")); <ENTER>
<option></option>
a
<select>…</select>
a.options
[<option></option>]
a.options[0];
<option></option>
目前为止一切顺利但现在
我输入a.options.
,然后输入forEach,但我注意到forEach没有列出。
a.options.forEach(function() {});
VM1048:2 Uncaught TypeError: a.options.forEach is not a function
at <anonymous>:2:11
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
但是a.选项看起来像一个数组
而且forEach绝对适用于数组,没有错误。
a=[1,2];
[1, 2]
typeof a
"object"
a.forEach(function(){});
undefined
我猜选择框的选项可能不是数组,那么它们是什么?
我听说过'arguments'伪数组..我猜也许选择框的'options'是这样的?/一些语法与数组相似的对象?
3条答案
按热度按时间ve7v8dk21#
因为
options
* 不是 * 数组;它是一个HTMLCollection。因此,它 * 不 * 具有forEach函数成员。HTMLCollection接口表示元素(按文档顺序)的泛型集合(类似数组的对象),并提供用于从列表中进行选择的方法和属性。
可以将
call
与Array.prototype.forEach
一起使用,因为HTMLCollection类似于数组1:1 HTMLAcovery接口有一个
length
属性,允许通过索引器进行位置访问。tcomlyy62#
user2864740给出的答案非常棒。
我将给予一个示例,说明如何基于提供的解决方案访问选项,并在控制台中显示所有选项的文本内容:
pokxtpni3#
您可以: