javascript - 加载页面时需要保持 collapsible 1 打开

标签 javascript jquery html css

我使用了 W3schools 中的以下示例来创建可折叠菜单: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_collapsible_symbol
我只需要规定在首次加载页面时第一个可折叠项是打开的。我应该怎么做呢?

HTML:

        <div class="singleFeature" ng-repeat="feature in myJson.bottomFeatures">
            <button class="collapsible" ng-click="collapse($index);" ng-class = "{'active':$index == featureSelectedPos}">{{feature.title}}</button>
            <div class="content" id="{{$index}}">
                <div ng-repeat="subfeat in feature.subfeatures">
                        <div class="subfeature-title">{{subfeat.title}}</div>
                        <div class="subfeature-paragraph">{{subfeat.paragraph}}</div>
                </div>
            </div>
        </div>  

CSS:

.collapsible {
  background-color: white;
  color: black;
  cursor: pointer;
  padding: 18px;
  width: 100%;
  border: none;
  text-align: left;
  outline: none;
  font-size: 15px;
}

.active {
  color: blue;
}

.content {
  background-color: white;
  overflow: hidden;
  max-height: 0;
  transition: max-height 0.8s ease-out;
}

.collapsible:after {
  content: '\02795'; 
  font-size: 13px;
  color: black;
  float: right;
  margin-left: 5px;
}

.subfeature-title
{
  font-size: 14px;
}

.subfeature-paragraph
{
  font-size: 10px;
}

.active:after {
  content: "\2796"; 
}

Javascript

  $scope.collapse = function(id)
  {
    if($scope.featureSelectedPos==id)//Closing an open div
    {
      $scope.featureSelectedPos = null;
      document.getElementById(id).style.maxHeight = null;   
    }
    else
    {
      if($scope.featureSelectedPos != null){
          document.getElementById($scope.featureSelectedPos).style.maxHeight = null;     
      }
      document.getElementById(id).style.maxHeight = document.getElementById(id).scrollHeight + "px";
      $scope.featureSelectedPos = id;
    }

  }


最佳答案

您可以在代码末尾的第一个按钮上触发点击事件:

document.querySelector('.collapsible').click();

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.maxHeight){
      content.style.maxHeight = null;
    } else {
      content.style.maxHeight = content.scrollHeight + "px";
    } 
  });
}
document.querySelector('.collapsible').click();
.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;
}

.collapsible:after {
  content: '\002B';
  color: white;
  font-weight: bold;
  float: right;
  margin-left: 5px;
}

.active:after {
  content: "\2212";
}

.content {
  padding: 0 18px;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.2s ease-out;
  background-color: #f1f1f1;
}
<h2>Animated Collapsibles</h2>

<p>A Collapsible:</p>
<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 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 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 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 - 加载页面时需要保持 collapsible 1 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748571/

相关文章:

javascript - 如何滚动大表面? (例如一篇文章)

javascript - 在页面顶部显示标题 - 滚动事件重新触发问题

javascript - 禁用 div 中的所有输入元素,并逐个启用它们

c# - 防止\r\n 转换为空格

javascript - 向 HTML 表格添加过滤

javascript - 带子菜单的 D3 上下文菜单

javascript - 将 javascript 移至单独的文件,ajax 调用出现错误

javascript - 移动浏览器窗口高度和页面缩放

javascript - 无法创建 Chrome 扩展程序

javascript - 将 JavaScript 文件加载到另一个 JavaScript 文件中