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

打开[复制]时,一个内容如何折叠其他内容

云建木
2023-03-14

我有下面的代码,我过去经常点击特定的按钮来显示或隐藏内容,它成功地工作了,但这不仅仅是我想要的,而且当一个内容显示时,我想要的也不可能是另一个打开,这意味着如果我显示其中一个内容并试图显示另一个内容,第二个内容将导致第一个内容显示自动崩溃,但我失败了,我怎么能做到呢。

我的代码

var coll = document.getElementsByClassName("colps");
for (let i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;
    if (content.style.display === "block") {
      content.style.display = "none";
      coll[i].innerHTML = 'open';
    } else {
      content.style.display = "block";
      coll[i].innerHTML = 'close';
    }
  });
}
.container {
  width: 30%;
}
.colps {
  background-color: lightblue;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  outline: none;
  font-size: 15px;
}
.active,
.colps:hover {
  background-color: dodgerblue;
}
.cont {
  padding: 10px;
  margin: 0;
  display: none;
  background-color: #f1f1f1;
}
<div class="container">
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
</div>

共有1个答案

郭远
2023-03-14

你可以试试下面的方法。我使用嵌套的forEach,当单击按钮时,我折叠了所有其他按钮。

js prettyprint-override">var coll = document.querySelectorAll(".colps");


coll.forEach(p => {
  p.addEventListener("click", function(e) {
    coll.forEach(p2 => {
        p2.nextElementSibling.style.display = "none";
        p2.innerHTML = 'open';
    });
    
    p.classList.toggle("active");
    var content = p.nextElementSibling;
    if (content.style.display === "block") {
      content.style.display = "none";
      p.innerHTML = 'open';
    } else {
      content.style.display = "block";
      p.innerHTML = 'close';
    }
  });
});
.container {
  width: 30%;
}

.colps {
  background-color: lightblue;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  outline: none;
  font-size: 15px;
}

.active,
.colps:hover {
  background-color: dodgerblue;
}

.cont {
  padding: 10px;
  margin: 0;
  display: none;
  background-color: #f1f1f1;
}
<div class="container">
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
  <button type="button" class="colps">open</button>
  <p class="cont">Lorem ipsum dolor sit amet</p>
</div>
 类似资料:
  • 问题内容: 如果有人熟悉css和Material UI,对此将提供任何帮助。基本上,我试图实现一个Material UI Drawer组件,该组件在打开时不仅会滑出页面内容的顶部,而且页面内容会在抽屉周围保持一致,即挤压或扩展。我在项目中使用引导行和容器,但是我不知道如何使用它们来实现此目的。这是我的组件的布局方式: 请注意,“ top”属性仅是因为我希望在打开或关闭抽屉时,应用栏的顶部标题区域保

  • 使用 oh-my-zsh 官网 http://ohmyz.sh/ 代码 https://github.com/robbyrussell/oh-my-zsh 安装步骤 先安装 zsh 安装 oh-my-zsh 以后环境变量在 ~/.zshrc 里 alias 俗称别名,是一个linux命令 举例:在git里面我们最常用的命令是查看状态,可以又太长 于是 vi ~/.zshrc 增加如下别名定义 al

  • 我试图在Tripadvisor中收集多家酒店的评论,我能够收集150个观察数据,其中包括来自30家酒店的150个评论数据。 但是,当我尝试添加hotel_name的新列并执行爬网时,hotel name不会再次出现,观察次数会减少到hotel的数量,即30。如何将酒店名称复制到每个审阅行? 这是我正在使用的代码:

  • 我正在构建一个可折叠的工具栏并且运行良好,但不知道如何在没有更多数据显示时使其停止。无论如何总是崩溃。例如:如果没有数据要显示在回收器中,则工具栏的折叠应停止并防止进一步折叠 这是我的代码:

  • 要创建一个可折叠的区块,先创建一个容器,然后给容器添加data-role="collapsible"属性 容器内直接的标题(h1-h6)子结点,Jquery Mobile会将之表现为可点击的按钮,并在左侧添加一个“+"按钮,表示是可以展开的 在头部后面你可以添加任何想要折叠的html标记。框架会自动把这些标记包裹在一个容器里用以折叠或显 <div data-role="collapsible">

  • 问题内容: 我有一些数据结构,我想将其中一个用作临时结构,将另一个用作非临时结构。 现在的问题当然是实际上只是指向,因此一旦清除,也是如此。 如何在使用Java时保留值? 问题答案: 您可以使用以下技巧: 或使用 您可以在此处获取有关clone()方法的一些信息 但是您应该记住,所有这些方式都会给您 List 的副本,而不是其所有元素。因此,如果您更改复制的列表中的元素之一,则它也将在原始列表中进