【问题标题】:removing a class if classname === id如果 classname === id 则删除一个类
【发布时间】:2021-05-24 19:57:44
【问题描述】:

我正在制作一个侧面菜单。菜单有主要类别和子类别。

我只想显示活动类别的子类别。

我试图通过向所有子类别元素添加一个类“d-none”(显示:无)然后从适当的子类别中删除“d-none”类来实现这一点。我通过 ...if (subSubCategoryArray[i].classList.contains === clicked.id) 确定了这一点,但它不起作用。

假设这是我的代码。 console.log(clicked.id) 返回正确的值,但“d-none”类不会从相应的元素中删除。

非常欢迎任何帮助。谢谢

<div class="sub-main" id="one">
    <a href="main-1">Main Category One</a>
</div>
<div class="sub-sub one" id="one-one">
    <a href="main-1-1">Sub One One</a>
</div>
<div class="sub-sub one" id="one-two">
    <a href="main-1-2">Sub One Two</a>
</div>
<div class="sub-sub one" id="one-three">
    <a href="main-1-3">Sub One Three</a>
</div>
<div class="sub-main" id="two">
    <a href="main-2">Main Category Two</a>
</div>
<div class="sub-sub two" id="two-one">
    <a href="main-2-1">Sub Two One</a>
</div>
<div class="sub-sub two" id="two-two">
    <a href="main-2-2">Sub Two Two</a>
</div>
<div class="sub-main" id="three">
    <a href="main-3">Main Category Three</a>
</div>


function ActiveMain (clicked_id){
    for (let i = 0; i < mainSubCategoryArray.length; i++){
        mainSubCategoryArray[i].classList.remove("active");
    }
    var clicked = document.getElementById(clicked_id);
    clicked.classList.add("active");

    console.log(clicked);
    console.log(clicked.id);
    
    for (let i = 0; i < subSubCategoryArray.length; i++){
        subSubCategoryArray[i].classList.add("d-none");
        console.log(clicked.id);
        if (subSubCategoryArray[i].classList.contains === clicked.id){
            subSubCategoryArray[i].classList.remove("d-none");
        }
    }
}

【问题讨论】:

  • subSubCategoryArray[i].classList.contains === clicked.id => subSubCategoryArray[i].classList.contains(clicked.id)
  • 谢谢。做到了。 Anwser 和我会接受
  • 为什么不使用事件委托?您的代码可以更简单。
  • 你能给我举一个我的例子中的事件委托的例子吗?我想进一步简化它。
  • 我会给你一个例子,但是你的 HTML 代码应该被完全重写。有关事件委托的清晰解释,请看这里:dmitripavlutin.com/javascript-event-delegation 尝试自己制作。如果您需要帮助,请在 SO 上提出新问题。我很乐意提供帮助。

标签: javascript


【解决方案1】:

您正在将 classList.contains 与 ID 进行比较,这是一个函数,您应该这样做:

subSubCategoryArray[i].classList.contains(clicked.id);

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2013-07-15
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多