如何找到特定类名在元素之前出现的次数?

How to find the number of times a specific classname showed up before an element?

提问人:Jaxon 提问时间:5/2/2023 更新时间:5/2/2023 访问量:40

问:

假设我有这样的东西。

<div class="apple"></div>
<div class="apple"></div>
<div class="apple" id="MyElement"></div>

我想查找另一个元素在id=“MyEement”的元素之前出现的次数,以便我以后可以使用document.getElementsByClassName(“class”)[unknown]在javascript上对其进行修改。有没有办法在绝对没有jQuery的情况下做到这一点?class="apple"

我完全可以用 class=apple 计算它之前的元素数量,但是我有很多带有该类名的元素,所以有没有办法以编程方式做到这一点

JavaScript getElementsByClassName

评论

1赞 epascarello 5/2/2023
为什么需要索引?为什么不只存储对元素的引用?

答:

0赞 Mehdi 5/2/2023 #1

直接使用 elements 数组,通过 findIndex 方法搜索 ID 为“MyElement”的元素。findIndex 返回的索引是元素在 elements 数组中的位置,因此我们可以直接使用它来确定在 ID 为“MyElement”的元素之前有多少个“apple”元素。

// Get all elements with the class name "apple"
const elements = document.getElementsByClassName("apple");

// Find the index position of the element with the ID "MyElement"
const myElementIndex = Array.prototype.findIndex.call(elements, (element) => element.id === "MyElement");

// Determine how many "apple" elements came before the element with ID "MyElement"
const numApplesBefore = myElementIndex;

console.log(numApplesBefore); // outputs: 2

评论

1赞 Pointy 5/2/2023
该调用的结果将是数组的值;这根本没有意义。.findIndex()appleIndicesappleIndices