HTML 切换显示和隐藏

HTML toggle show and hide

我开发了一个带有边栏标题的 HTML 文档,我想在其中单击标题,它必须显示和隐藏标题下方的组件。

问题是它只适用于我的 "LOGINS" 标题。对于我的 "What is attendance" 标题,它不显示和隐藏其下方的组件,它隐藏了 "LOGIN" 组件。所以根据我的说法,它不会对 "What is attendance" 标题生效。

我也想在每次打开文档时隐藏组件。

另一个问题。每次显示标题下的组件时,如何使箭头旋转?

这是我目前拥有的:

HTML

<script>
function myFunction() {
    var x = document.getElementById('myDIV');
    if (x.style.display === 'none') {
        x.style.display = 'block';
    } else {
        x.style.display = 'none';
    }
}
</script>

<body style=background-image:url('Images/blue.jpg')>

<section id="body" class="width" >


            <aside id="sidebar" class="column-left">
            <img class="thumbnail" src="Images/VsoftLogo.jpg" alt="thumbnail" />

            <h2 onclick="myFunction()" class ="sidebar-heading"><i class="down" style-"top:-50px"></i>   LOGINS</h2>
             <div id="myDIV">
              <nav id="mainnav">
                <ul>
                                    <li><a href="#">Home</a></li>
                                    <li><a href="#">Products</a></li>
                                    <li><a href="#">Solutions</a></li>
                                    <li><a href="#">Contact1</a></li>
                                    <li><a href="#">Contact1</a></li>
                                    <li><a href="#">Contact1</a></li>

                            </ul>
            </nav>  


            </div>


            <h4 onclick="myFunction()" class ="sidebar-heading"><i class="down" style-"top:-50px"></i>   what is attendance</h4>
             <div id="myDIV">
              <nav id="mainnav">
                <ul>
                                    <li><a href="#">Example</a></li>
                                    <li><a href="#">Example2</a></li>
                                    <li><a href="#">Example3</a></li>
                                    <li><a href="#">Example4</a></li>
                                    <li><a href="#">Example</a></li>
                                    <li><a href="#">Contact1</a></li>
                            <hr>                                
                            </ul>
            </nav>  
            </div>

CSS

.mystyle {
    width: 100%;
    padding: 25px;
    background-color: coral;
    color: white;
    font-size: 25px;
}
i {
  border: solid #ffb200;
  border-width: 0 5px 5px 0;
  display: inline-block;
  padding: 5px;

}
.down {
   color:#ffb200;
   transform: rotate(45deg);
   -webkit-transform: rotate(45deg);
   -ms-transform: rotate(45deg);
}

这里您已经为多个容器使用了 id。 DOM 中的 id 在任何时候都应该是唯一的。

此外,HTML 中的 style 标签存在语法错误。

您可以使用 event 属性 并相应地操作它以在页面加载时默认隐藏,而不是在此处定义 ID。

您可以将 class mainnav 分配给您的 show/hide 容器,使它们成为 h

检查fiddle

参考代码:

function myFunction(event) {
  var x = event.target.nextElementSibling,
    y = event.target.firstChild;
  if (x.style.display === 'none' || x.style.display === '') {
    x.style.display = 'block';
    y.classList.add("down");
    y.classList.remove("right");
  } else {
    x.style.display = 'none';
    y.classList.remove("down");
    y.classList.add("right");
  }
}
.sidebar-heading {
  cursor: pointer;
}

.mystyle {
  width: 100%;
  padding: 25px;
  background-color: coral;
  color: white;
  font-size: 25px;
}

i {
  border: solid #ffb200;
  border-width: 0 5px 5px 0;
  display: inline-block;
  padding: 5px;
}

.down {
  color: #ffb200;
  transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
}

.right {
  color: #ffb200;
  transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
}

.mainnav {
  display: none;
}
<body>
  <section id="body" class="width">
    <aside id="sidebar" class="column-left">
      <h2 onclick="myFunction(event);" class="sidebar-heading"><i class="right" style="top:-50px"></i> LOGINS</h2>
      <div class="mainnav">
        <nav>
          <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">Products</a></li>
            <li><a href="#">Solutions</a></li>
            <li><a href="#">Contact1</a></li>
            <li><a href="#">Contact1</a></li>
            <li><a href="#">Contact1</a></li>
          </ul>
        </nav>
      </div>


      <h4 onclick="myFunction(event);" class="sidebar-heading"><i class="right" style="top:-50px"></i> what is attendance</h4>
      <div class="mainnav">
        <nav>
          <ul>
            <li><a href="#">Example</a></li>
            <li><a href="#">Example2</a></li>
            <li><a href="#">Example3</a></li>
            <li><a href="#">Example4</a></li>
            <li><a href="#">Example</a></li>
            <li><a href="#">Contact1</a></li>
            <hr>
          </ul>
        </nav>
      </div>