javascript - 从最高处开始对所有 div 应用 z-index

标签 javascript

我有这个简单的循环,它将 z-index 添加到 DOM 中的元素。

let init = () => {
  let allDivs = document.querySelectorAll(".pa");
  let initialIndex = 1;

  for (let i = 0; i < allDivs.length; i++) {
    allDivs[i].style.zIndex = initialIndex++
  }
}
init();
<div class="ma">
   <div class="pa">Test</div>
   <div class="pa">Test</div>
   <div class="pa">Test</div>
</div>

然后,反过来,我所有的 .pa div 都会应用索引并递增 1。

问题是,我需要走另一条路。从最高点开始,无论是 3、5 还是 10,然后倒退。


电流输出

<div class="pa" style="z-index: 1;"></div>
<div class="pa" style="z-index: 2;"></div>
<div class="pa" style="z-index: 3;"></div>

期望的输出

<div class="pa" style="z-index: 3;"></div>
<div class="pa" style="z-index: 2;"></div>
<div class="pa" style="z-index: 1;"></div>

我确实尝试使用 -- 所以它会读作 allDivs[i].style.zIndex = initialIndex-- 但这只是将 z-index 降低了 1, 0,-1。

这可能是一个 super 愚蠢的问题,但我不知道我该怎么做?

最佳答案

您可以使用数组的长度启动 initialIndex,然后在每个循环中递减。

let init = () => {
  let allDivs = document.querySelectorAll(".pa");
  let initialIndex = allDivs.length;
  for (let i = 0; i < allDivs.length; i++) {
    allDivs[i].style.zIndex = initialIndex--
  }
}
init();

您还可以使用 IIFE如果您的 init 函数仅在此处使用。

(() => {
  let allDivs = document.querySelectorAll(".pa");
  let initialIndex = allDivs.length;
  for (let i = 0; i < allDivs.length; i++) {
    allDivs[i].style.zIndex = initialIndex--
  }
})()

关于javascript - 从最高处开始对所有 div 应用 z-index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018511/

相关文章:

javascript - 使用钩子(Hook)(setState、useEffect)从屏幕中提取重复代码的最佳方法?

javascript - 如何在 MongoDB 的多个嵌套数组中插入和查找对象?

javascript - 在 iOS UIWebView 中评估 JavaScript 时出现 “SyntaxError: Unexpected EOF”

javascript - 根据属性值创建多个对象数组,然后迭代每个数组

javascript - 创建 'Automatic copy to clipboard' JavaScript

javascript - 组合多个 jQuery 脚本

javascript - Sankey 图表的 Google 图表问题

javascript小算法来计算价格

javascript - 如何使用 jQuery 将字符串放入输入类型 ="text"中?

javascript - Bootstrap 示例 Carousel 代码不切换幻灯片