javascript 如何将HTMLCollection转换为数组-性能的观点约50个项目[复制]

tv6aics1  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(154)

此问题在此处已有答案

Convert ES6 Iterable to Array(6个答案)
2天前关闭。
这篇文章是编辑和提交审查2天前。
我正在尝试开发一个可重用的 accordion 组件,我必须找到所有 accordion 项,这些项为我提供了HTMLCollection,它看起来像一个数组形式,但如果您尝试使用一些方法(如forEach)进行操作,那么您将得到一个错误。
我正在寻找最简单和最优化的方法来解决这些问题,同时使用纯JavaScript。
代码示例:

HTML

<div classs="container">
    <div id="accordion">
        <div class="accordion-item">...</div>
        <div class="accordion-item">...</div>
        <div class="accordion-item">...</div>
    </div>
</div>

JavaScript语言

var accordion_el = document.getElementById("accordionExample"),
    accordion_items = document.getElementsByClassName("accordion-item");

// below code will give error
accordion_items.forEach(function (item) {
    console.log(item);
});

我尝试使用toArray(),但失败了。

对我有效的方法:

  • Array.from()
  • 同样,[...document.getElementsByClassName("accordion-item")]也是如此

我有一个关于 * 最佳性能优化 * 的问题,如果一个页面上有同一组件的多个示例,那么DOM操作需要最少的时间。

ckx4rj1h

ckx4rj1h1#

可以使用扩展语法转换为数组。

accordion_items = [...document.getElementsByClassName("accordion-item")];

但是,您可以在这里直接使用document.querySelectorAll,它返回一个具有forEach方法的NodeList
x一个一个一个一个x一个一个二个x

相关问题