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

如何通过两个按钮正确切换cards和table两个元素的显示状态?

问题原因

你的代码多了多余的状态判断,反而导致逻辑和需求不符:

  • 点击对应按钮时,你先判断对应元素当前是否显示,如果显示就直接隐藏,这就会触发重复点击同一按钮时元素被错误关闭的问题
  • 初始状态下cards默认显示,此时点击cards按钮会直接命中targetCards.style.display !== "none"的判断,直接把cards隐藏,不符合需求

修复方案

需求的核心是「点击哪个按钮就固定显示哪个元素,隐藏另一个」,不需要额外判断当前状态,直接赋值即可,逻辑更简单也不会出错:

const targetTable = document.getElementById("table");
const targetCards = document.getElementById("cards");
const btnTable = document.getElementById("toggle"); // table按钮
const btnCards = document.getElementById("toggle2"); // cards按钮

// 初始状态:cards显示,table隐藏
targetCards.style.display = "block";
targetTable.style.display = "none";

// 点击table按钮:显示table,隐藏cards
btnTable.onclick = function () {
  targetTable.style.display = "block";
  targetCards.style.display = "none";
};

// 点击cards按钮:显示cards,隐藏table
btnCards.onclick = function () {
  targetCards.style.display = "block";
  targetTable.style.display = "none";
};

对应的HTML代码不需要做任何修改即可正常运行。

如果后续要扩展其他逻辑、需要保留判断分支,可以修改判断条件:仅当对应元素当前为隐藏状态时才执行切换,否则不做任何操作:

btnTable.onclick = function () {
  // 只有table当前隐藏的时候才执行切换
  if (targetTable.style.display === "none") {
    targetTable.style.display = "block";
    targetCards.style.display = "none";
  }
};

btnCards.onclick = function () {
  // 只有cards当前隐藏的时候才执行切换
  if (targetCards.style.display === "none") {
    targetCards.style.display = "block";
    targetTable.style.display = "none";
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:36:05