Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript通过节点列表进行迭代_Javascript_Loops_Nodelist - Fatal编程技术网

JavaScript通过节点列表进行迭代

JavaScript通过节点列表进行迭代,javascript,loops,nodelist,Javascript,Loops,Nodelist,我正在寻找一种迭代节点列表(不包括长度)的最佳方法。我正在使用: var foo = document.querySelectorAll('[id^=foo_id]') console.log(foo) 返回的节点列表包含所有必需元素+长度的最后一个条目: 0: input#foo_id_... 1: input#foo_id_... .................. n: input#foo_id_... length: n+1 我想知道迭代节点列表最有效的方法是

我正在寻找一种迭代节点列表(不包括长度)的最佳方法。我正在使用:

var foo =  document.querySelectorAll('[id^=foo_id]')
console.log(foo)
返回的节点列表包含所有必需元素+长度的最后一个条目:

  0: input#foo_id_...
  1: input#foo_id_...
  ..................
  n: input#foo_id_...
  length: n+1

我想知道迭代节点列表最有效的方法是什么。我可以利用列表长度等,但想知道是否有更“优雅”的方法。

尽管节点列表不是数组,但可以使用forEach()对其进行迭代


另请参见

最简单的方法是for循环:

for (let i = 0; i < foo.length; i++) {
  // Do stuff
}
如果要特别使用
map
,请使用
Array.from
作为第二个参数,该参数是要应用于
map
的回调

Array.from(foo, e => /* .map callback */);
在较旧的环境中:

Array.prototype.slice.call(foo).forEach(e => /* Do stuff */);

(我知道你可以在节点列表上使用数组方法,但是如果你坚持使用一种数据类型会更容易。)

你问题中的第一行代码是无效的。你尝试了什么?你发现了什么低效率?也被愚弄了。你可能想看看,上面说,“一般来说,将节点列表转换为数组或使用数组的函数引用节点列表不是一个好主意。”编辑@Hereticsmonkey,谢谢@但是汉堡比比萨饼好(这只是一个不合理的粗体说法,不知道重点在哪里),而且这个答案也被否决了,就像这个一样。有
节点列表。forEach
,请使用它。@neuhas vanilla.js已经为节点列表内置了forEach。
Array.prototype.slice.call(foo).forEach(e => /* Do stuff */);