当前位置: 首页 > 知识库问答 >
问题:

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

韦繁
2023-03-14

我有一个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>

如您所见,在父div.img-row下有四个子div,它包含类.move;第三个子div包含一个额外的类.move。我想在包含.moving类的子项之前选择所有子项。注任何子级都可以包含.moving类,并且在任何情况下,我都希望所有子级位于它之前。

这就是我所做的

document.querySelectorAll('.move:not(.moving)')

但在本例中它也选择最后一个子项。在使用JavaScript选择类.moving之前,我如何确保只有子类?

我在stackoverflow中发现了一个类似的问题:在element with Class之前选择所有元素?但提供的解决方案是在CSS中。我想要一个javascript解决方案。

共有1个答案

卓云
2023-03-14

您可以使用convert NodeList转换为Array,然后切片到具有moving类的元素的第一个索引

null

const allElements = Array.from(document.querySelectorAll('.move'))
const expectedElements = allElements.slice(
  0,
  allElements.findIndex(element => element.classList.contains('moving'))
)

console.log(expectedElements.length)
<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>
 类似资料:
  • 假设我有这样的html: 我只想获得之前的 。有没有办法用JSOUP做到这一点呢?我知道我可以把所有的宠物都弄成这样: 但这也包括额外的宠物。我想知道我是只能选择上面的宠物还是只是删除下面的宠物然后使用那个代码?

  • 问题内容: 我想找到一种方法来获取元素树的所有子元素,就像这样,因为自python 2.7版本以来已弃用,尽管现在我仍然可以使用它,但我不想再使用它了。 谢谢。 问题答案: 的所有子元素(后代): 一个更完整的示例: 排除根本身:

  • 问题内容: 我有这段代码来获取我需要的所有元素并进行一些处理。问题是我需要指定每个面板以获取其中的元素。 我想做这样的事情,并且不需要指定所有面板名称就可以获取所有元素。我该怎么做。下面的代码无法获取所有元素。 问题答案: 您可以编写一个递归方法并在每个容器上递归: 该站点提供了一些示例代码: 如果只需要直接子组件的组件,则可以将递归深度限制为2。

  • 问题内容: 我有以下HTML结构: 我只想选择之前的内容。我怎样才能做到这一点?在我的内容中,越来越多的东西,因此解决方案应该是通用的。 问题答案: 据我所知,CSS没有提供将 在* 选择器 之前定位的任何选择器。您能否将其选择为()之后的? * 如您所见,这可能是您依赖CSS时可以使用的最佳选择器,尽管您可以轻松地向之前的每个类添加一个类。这样可以避免您在另一个段落和段落节之前有一个段落节的情况

  • 问题内容: 我今天一直在测试Javascript CSS函数,并注意到当使用.style.cssText时,它仅提供了我用JS设置的CSS。 相反,我想获取元素的所有CSS,所以我猜我在做错什么,或者可能需要另一个函数,例如getComputedStyle,但要使用整个CSS而不是单个属性值,但是我找不到搜索时需要的东西。 所以我的问题是如何从代码的最后部分获得完整的CSS,例如: 而不是当前输出

  • 问题内容: 我正在查看的页面包含: 我想获取div中的所有文本,除了中的文本。(我想获得“文本1”,“文本3”和“文本4”)。可能有几个元素,或者根本没有。而且可能有一些元素,甚至一个元素都在另一个元素之中,或者根本没有。 我想通过获取div的所有html源并使用正则表达式删除元素来做到这一点。但是selenium.get_text不会返回html,而只是返回文本(全部!)。 我知道我可以使用正则