You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript实现页面加载时London标签内容默认激活?

解决页面加载时London标签内容不激活的问题

我看了你的代码,问题很清晰:你已经给London按钮加上了active类,让它的样式正确显示,但对应的标签内容(.tabcontent元素)默认是display: none,而openCity函数只有在点击按钮时才会执行,页面初始化时并没有触发显示逻辑。

这里有两种简单的解决方案:

方法1:页面加载时触发active按钮的点击事件

这是最直接的方式,利用现有函数逻辑,在页面DOM加载完成后,手动触发带有active类的按钮的点击事件,让它自动执行openCity函数显示内容。

你只需要在现有<script>标签的末尾添加以下代码:

// 确保DOM加载完成后执行
window.addEventListener('load', function() {
  document.querySelector('.tablinks.active').click();
});

修改后的完整代码如下:

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial;}

/* Style the tab */
.tab {
  overflow: hidden;
  border: 1px solid #ccc;
  background-color: #f1f1f1;
}

/* Style the buttons inside the tab */
.tab button {
  background-color: inherit;
  float: left;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 14px 16px;
  transition: 0.3s;
  font-size: 17px;
}

/* Change background color of buttons on hover */
.tab button:hover {
  background-color: #ddd;
}

/* Create an active/current tablink class */
.tab button.active {
  background-color: #ccc;
}

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

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

<div class="tab">
  <button class="tablinks active" onclick="openCity(event, 'London')">London</button>
  <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
  <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
</div>

<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";
}

// 页面加载完成后触发active按钮的点击事件
window.addEventListener('load', function() {
  document.querySelector('.tablinks.active').click();
});
</script>

</body>
</html>

方法2:直接设置London内容的初始显示状态

如果你不想触发点击事件,也可以直接给London的.tabcontent元素设置初始显示状态,同时保持按钮的active类一致。

你可以修改London的div标签,添加内联样式:

<div id="London" class="tabcontent" style="display: block;">

或者更推荐用CSS类来控制(避免内联样式):

  1. 在CSS中添加一个新类:
.tabcontent.active-content {
  display: block;
}
  1. 给London的div加上这个类:
<div id="London" class="tabcontent active-content">
  1. 修改openCity函数,用类切换代替直接修改style:
function openCity(evt, cityName) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].classList.remove("active-content");
  }
  tablinks = document.getElementsByClassName("tablinks");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].className = tablinks[i].className.replace(" active", "");
  }
  document.getElementById(cityName).classList.add("active-content");
  evt.currentTarget.className += " active";
}

这种方式更符合语义化和样式分离的原则,后续维护也更方便。

内容的提问来源于stack exchange,提问作者PPY XIII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:31:31