如何使用纯javascript获取特定元素之前的所有元素?

如何使用纯javascript获取特定元素之前的所有元素?,javascript,html,Javascript,Html,我有一个html,如下所示 <div class="img-row"> <div class="img-column move"> <img class="demo" src="/image/001.jpg"> </div> <div class="img-column move">

我有一个html,如下所示

<div class="img-row">

    <div class="img-column move">
        <img class="demo" src="/image/001.jpg">
    </div>

    <div class="img-column move"> 
        <img class="demo" src="/image/002.jpg">
    </div>

    <div class="img-column move moving">
        <img class="demo" src="/image/003.jpg">
    </div>

    <div class="img-column move">.   
        <img class="demo" src="/image/004.jpg">
    </div>

</div>
但在这种情况下,它也会选择最后一个孩子。如何确保使用javascript仅选择class.moving之前的子级


我在stackoverflow中发现了类似的问题,但提供的解决方案是css。我想要一个javascript解决方案。

我认为您无法在单个选择器中获得它,因为:not伪类不允许超出self:scope。所以我会用一个简单的递归函数来填充数组

const moving=document.querySelector'.moving' const befores=getBeforesmoving console.logbefores.length 函数getBeforeselement,数组=[]{ const previous=element.previousElementSibling 如果!以前的 返回数组 array.pushprevious 返回getBeforesprevious,数组 }
我认为不能在单个选择器中获得它,因为:not伪类不允许超出self:scope。所以我会用一个简单的递归函数来填充数组

const moving=document.querySelector'.moving' const befores=getBeforesmoving console.logbefores.length 函数getBeforeselement,数组=[]{ const previous=element.previousElementSibling 如果!以前的 返回数组 array.pushprevious 返回getBeforesprevious,数组 }
您可以使用convert NodeList to Array,然后切片到具有移动类的元素的第一个索引

const Allegements=Array.fromdocument.querySelectorAll'.move' 常量expectedElements=等位基因.slice 0, Allegements.findIndexelement=>element.classList.包含“移动” console.logexpectedElements.length .
您可以使用convert NodeList to Array,然后切片到具有移动类的元素的第一个索引

const Allegements=Array.fromdocument.querySelectorAll'.move' 常量expectedElements=等位基因.slice 0, Allegements.findIndexelement=>element.classList.包含“移动” console.logexpectedElements.length .
document.querySelectorAll('.move:not(.moving)')