javascript - 使可折叠 Div 默认情况下不隐藏

标签 javascript html css

我正在使用这里的可折叠 div 代码:https://www.w3schools.com/howto/howto_js_collapsible.asp

可折叠 div 默认情况下是隐藏的,但我不知道如何编辑 JavaScript 来使其默认情况下全部可见,并且仅当您单击隐藏它们的按钮时才会隐藏。

示例代码:

HTML

<button type="button" class="collapsible">Open Collapsible</button>
<div class="content">
  <p>Lorem ipsum...</p>
</div>

CSS

/* Style the button that is used to open and close the collapsible content */
.collapsible {
  background-color: #eee;
  color: #444;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  text-align: left;
  outline: none;
  font-size: 15px;
}

/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
.active, .collapsible:hover {
  background-color: #ccc;
}

/* Style the collapsible content. Note: hidden by default */
.content {
  padding: 0 18px;
  display: none;
  overflow: hidden;
  background-color: #f1f1f1;
}

Java 脚本

var coll = document.getElementsByClassName("collapsible");
var i;

for (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";
    } else {
      content.style.display = "block";
    }
  });
}

任何帮助将不胜感激。谢谢! - 劳伦

最佳答案

您确实必须将 .content 的 css 更改为 display: block; 而且,您还必须更改 JavaScript,以便当您单击打开可折叠它关闭。否则,您必须单击它两次才能将其关闭,因为第一次单击时它仍然没有任何 content.style.display

特别是这里的检查:

if (!content.style.display || content.style.display === "block") {
  content.style.display = "none";
} else {
  content.style.display = "block";
}

请参阅下面的代码片段:

var coll = document.getElementsByClassName("collapsible");
var i;

for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var content = this.nextElementSibling;

    if (!content.style.display || content.style.display === "block") {
      content.style.display = "none";
    } else {
      content.style.display = "block";
    }
  });
}
.collapsible {
  background-color: #777;
  color: white;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  text-align: left;
  outline: none;
  font-size: 15px;
}

.active,
.collapsible:hover {
  background-color: #555;
}

.content {
  padding: 0 18px;
  display: block;
  overflow: hidden;
  background-color: #f1f1f1;
}
<h2>Collapsibles</h2>

<p>A Collapsible:</p>
<button type="button" class="collapsible">Open Collapsible</button>
<div class="content">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </p>
</div>

<p>Collapsible Set:</p>
<button type="button" class="collapsible">Open Section 1</button>
<div class="content">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </p>
</div>
<button type="button" class="collapsible">Open Section 2</button>
<div class="content">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </p>
</div>
<button type="button" class="collapsible">Open Section 3</button>
<div class="content">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  </p>
</div>

关于javascript - 使可折叠 Div 默认情况下不隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61381157/

相关文章:

css :hover on ul li, 不要在 ul li.dont-hover 上悬停但不要覆盖

css - 使用带有样式链接的 IE8 的意外 CSS 结果

javascript - 当 pageYOffSet = 0 时隐藏导航栏

javascript - 如何将范围传递给回调?

javascript - 我们如何知道在更改过滤器模型后自定义过滤器何时在 ng-repeat 上完成

javascript - 图像叠加网格

php - 使用 javascript 更改背景颜色

html - 使用 bootstrap 3.3 对齐移动设备和桌面的搜索栏

javascript - 如何删除 Canvas 背景并显示完整背景图像

html - 页脚未正确显示列 (CSS)