【问题标题】:Open Tab(Ordered List) on load?加载时打开标签(有序列表)?
【发布时间】:2016-08-16 03:45:12
【问题描述】:

我正在按照示例使用 HTML 和 Javascript 制作选项卡式内容。链接在这里。

http://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_tabs

在这个示例中,我希望伦敦选项卡在页面加载后打开。我玩过 Javascript 代码中的 Active/Non active 类,但似乎无法弄清楚。

<!DOCTYPE html>
<html>
<style>
body {font-family: "Lato", sans-serif;}

ul.tab {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    border: 1px solid #ccc;
    background-color: #f1f1f1;
}

/* Float the list items side by side */
ul.tab li {float: left;}

/* Style the links inside the list items */
ul.tab li a {
    display: inline-block;
    color: black;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    transition: 0.3s;
    font-size: 17px;
}

/* Change background color of links on hover */
ul.tab li a:hover {
    background-color: #ddd;
}

/* Create an active/current tablink class */
ul.tab li a:focus, .active {
    background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
    display: none;
    padding: 6px 12px;
    border: 1px solid #ccc;
    border-top: none;
}
</style>
<body>

<p>Click on the links inside the tabbed menu:</p>

<ul class="tab">
  <li><a href="#" class="tablinks" onclick="openCity(event, 'London')">London</a></li>
  <li><a href="#" class="tablinks" onclick="openCity(event, 'Paris')">Paris</a></li>
  <li><a href="#" class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</a></li>
</ul>

<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>

<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p>
</div>

<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>

<script>
function openCity(evt, cityName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(cityName).style.display = "block";
    evt.currentTarget.className += " active";
}
</script>

</body>
</html>

【问题讨论】:

  • Cud 接受并支持您认为有用的答案。

标签: javascript jquery html css


【解决方案1】:

在页面加载后触发对该元素的自动点击:

document.addEventListener("DOMContentLoaded", function() {
  document.getElementById("default_city_link").click();
});

工作片段:

function openCity(evt, cityName) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" active", "");
  }
  document.getElementById(cityName).style.display = "block";
  evt.currentTarget.className += " active";
}
document.addEventListener("DOMContentLoaded", function() {
  document.getElementById("default_city_link").click();
});
body {
  font-family: "Lato", sans-serif;
}
ul.tab {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
}
/* Float the list items side by side */

ul.tab li {
  float: left;
}
/* Style the links inside the list items */

ul.tab li a {
  display: inline-block;
  color: black;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  transition: 0.3s;
  font-size: 17px;
}
/* Change background color of links on hover */

ul.tab li a:hover {
  background-color: #ddd;
}
/* Create an active/current tablink class */

ul.tab li a:focus,
.active {
  background-color: #ccc;
}
/* Style the tab content */

.tabcontent {
  display: none;
  padding: 6px 12px;
  border: 1px solid #ccc;
  border-top: none;
}
<p>Click on the links inside the tabbed menu:</p>

<ul class="tab">
  <li><a href="#" id="default_city_link" class="tablinks" onclick="openCity(event, 'London')">London</a>
  </li>
  <li><a href="#" class="tablinks" onclick="openCity(event, 'Paris')">Paris</a>
  </li>
  <li><a href="#" class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</a>
  </li>
</ul>

<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>

<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p>
</div>

<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>

【讨论】:

    【解决方案2】:

    您可以在文档准备好后运行代码,如下所示:

    <script>
    $(document).ready(function(){
          openCity(event, 'London')
    });
    
    
    function openCity(evt, cityName) {
        var i, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }
        tablinks = document.getElementsByClassName("tablinks");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].className = tablinks[i].className.replace(" active", "");
        }
        document.getElementById(cityName).style.display = "block";
        evt.currentTarget.className += " active";
    }
    </script>
    

    【讨论】:

      【解决方案3】:

      您可以通过调用click() 函数在第一个标签上触发点击事件。 (http://www.w3schools.com/jsref/met_html_click.asp)

      body {font-family: "Lato", sans-serif;}
      
      ul.tab {
          list-style-type: none;
          margin: 0;
          padding: 0;
          overflow: hidden;
          border: 1px solid #ccc;
          background-color: #f1f1f1;
      }
      
      /* Float the list items side by side */
      ul.tab li {float: left;}
      
      /* Style the links inside the list items */
      ul.tab li a {
          display: inline-block;
          color: black;
          text-align: center;
          padding: 14px 16px;
          text-decoration: none;
          transition: 0.3s;
          font-size: 17px;
      }
      
      /* Change background color of links on hover */
      ul.tab li a:hover {
          background-color: #ddd;
      }
      
      /* Create an active/current tablink class */
      ul.tab li a:focus, .active {
          background-color: #ccc;
      }
      
      /* Style the tab content */
      .tabcontent {
          display: none;
          padding: 6px 12px;
          border: 1px solid #ccc;
          border-top: none;
      }
      <body>
      
      <p>Click on the links inside the tabbed menu:</p>
      
      <ul class="tab">
        <li><a href="#" class="tablinks" onclick="openCity(event, 'London')">London</a></li>
        <li><a href="#" class="tablinks" onclick="openCity(event, 'Paris')">Paris</a></li>
        <li><a href="#" class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</a></li>
      </ul>
      
      <div id="London" class="tabcontent">
        <h3>London</h3>
        <p>London is the capital city of England.</p>
      </div>
      
      <div id="Paris" class="tabcontent">
        <h3>Paris</h3>
        <p>Paris is the capital of France.</p>
      </div>
      
      <div id="Tokyo" class="tabcontent">
        <h3>Tokyo</h3>
        <p>Tokyo is the capital of Japan.</p>
      </div>
      
      <script>
      function openCity(evt, cityName) {
          var i, tabcontent, tablinks;
          tabcontent = document.getElementsByClassName("tabcontent");
          for (i = 0; i < tabcontent.length; i++) {
              tabcontent[i].style.display = "none";
          }
          tablinks = document.getElementsByClassName("tablinks");
          for (i = 0; i < tablinks.length; i++) {
              tablinks[i].className = tablinks[i].className.replace(" active", "");
          }
          document.getElementById(cityName).style.display = "block";
          evt.currentTarget.className += " active";
      }
        
      document.getElementsByClassName('tablinks')[0].click();
      </script>
      
      </body>

      【讨论】:

        猜你喜欢
        • 2021-11-04
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2015-08-17
        相关资源
        最近更新 更多