如何只 Select 有类的父元素?

  • ❌并不是所有元素都有像它这样的类

  • ✅,但只有类的第一个父元素,

    • 我们获取的这个元素不需要有一个.mycard的父级

它需要返回一个包含满足这些条件的所有div的数组,并且应该能够处理每一棵深树(深度为10是一个很难做到的点)

  • 因此,如果没有类,它就不应该考虑div,并深入研究,直到找到我们想要的类,中断,try 搜索其他类并重复该过程,并返回一个array.
  • 如果我们找到想要的类,我们将其添加到数组中以返回
    • 我们需要判断嵌套的div是否继续
      • 如果继续,并且我们不执行任何其他嵌套操作,则不返回任何新内容
      • 如果它停止,我们需要搜索是否有另一个带有类的div,如果将其添加到数组中,则重复该过程,直到我们完成树的深度.

下面是一个示例,您可以在其中测试代码:

    <div class="mycard"> <!-- should get the parent only -->
      <div class="mycard">
        <div class="mycard">
          <div class="mycard"></div>
        </div>
      </div>
    </div>

    <div class="mycard"> <!-- should get also this with a array of the fist and second -->
      <div class="mycard">
        <div class="mycard">
          <div class="mycard"></div>
        </div>
      </div>
    </div>

    <div class="another-div">
      <div class="mycard"> 
        <!-- should get also this that isn't in body directly -->
      </div>
    </div>

    <div class="another-div">
      <div class="foo">
        <div class="bar">
          <div class="mycard"> 
            <!-- should get also this that isn't in body directly -->
          </div>
        </div>
      </div>
    </div>

    <div class="another-div">
      <div class="foo">
        <div class="bar">
          <div class="mycard"> <!-- this -->
            <div class="boo">
              <div class="mycard"> <!-- also this -->
              </div> 
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="mycard"> <!-- this -->
      <div class="boo">
        <div class="mycard"> <!-- also this -->
          <div class="mycard"> 
            <div class="mycard"></div> 
          </div>
        </div> 
      </div>
    </div>

    <!-- 在此处总共返回[myCard,...]8个,可在forEach中循环 -->

在此处总共返回[myCard,...]8个,可在forEach中循环

推荐答案

您可以使用document.getElementsByClassName并将结果转换为array.从那里,你可以使用.filter().就像这样:

let els = [...document.getElementsByClassName('mycard')];
els = els.filter(el => !el.parentNode.classList.contains('mycard'));

console.log(els);
<div class="mycard">
  <!-- should get the parent only -->
  <div class="mycard">
    <div class="mycard">
      <div class="mycard"></div>
    </div>
  </div>
</div>

<div class="mycard">
  <!-- should get also this with a array of the fist and second -->
  <div class="mycard">
    <div class="mycard">
      <div class="mycard"></div>
    </div>
  </div>
</div>

<div class="another-div">
  <div class="mycard">
    <!-- should get also this that isn't in body directly -->
  </div>
</div>

<div class="another-div">
  <div class="foo">
    <div class="bar">
      <div class="mycard">
        <!-- should get also this that isn't in body directly -->
      </div>
    </div>
  </div>
</div>

<!-- returns [mycard, mycard, mycard, mycard] loopable in forEach -->

Javascript相关问答推荐

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

提交表格后保留Web表格中的收件箱值?

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

Javascript,部分重排序数组

如何在Javascript中的控制台上以一行形式打印循环的结果

如何在 cypress 中使用静态嵌套循环

如何从HTML对话框中检索单选项组的值?

这个值总是返回未定义的-Reaction

如何在使用rhandsontable生成表时扩展数字输入验证?

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

为什么JPG图像不能在VITE中导入以进行react ?

Reaction Redux&Quot;在派单错误中检测到状态Mutations

当我try 将值更改为True时,按钮不会锁定

如何在Press上重新启动EXPO-AV视频?

如何组合Multer上传?

Jexl to LowerCase()和Replace()

FireBase FiRestore安全规则-嵌套对象的MapDiff

如何让SVG图标在被点击和访问后改变 colored颜色 ,并在被访问后取消点击时恢复到原来的 colored颜色 ?

调用特定数组索引时,为什么类型脚本不判断未定义

找不到处于状态的联系人