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

如何用纯JavaScript切换两个span文本?切换功能失效求助

解决两个span切换显示和文本内容的问题

你的代码核心问题有两个:

  • 只修改了存储display状态的变量值,但没把这些值写回元素的style.display属性,所以元素的显示状态根本不会变化
  • 变量cdisp和erdisp没有用let/const声明,会变成全局变量,容易引发意外问题

以下是修正后的完整代码:

HTML

<span id="fcol" style="display: block; font-size:24px; color: green;">Only letters please</span> 
<span id="ferr" style="display: none; font-size:24px; color: red;">Only letters please 2</span>
<button onClick="tog()">Sub</button>

<div id="pr"></div>

CSS

body {
  text-align: center;
}

JavaScript

function tog() {
  let fc = document.getElementById("fcol");
  let fe = document.getElementById("ferr");
  let pr = document.getElementById("pr");
  
  // 声明变量,避免全局污染
  let cdisp = fc.style.display;
  let erdisp = fe.style.display;
  
  if (erdisp !== "block") {
    cdisp = "none";
    erdisp = "block";   
    pr.innerHTML = fe.textContent;
    // 把新的display值赋值给元素,生效显示状态
    fc.style.display = cdisp;
    fe.style.display = erdisp;
  } else {
    erdisp = "none";                                                                                                            
    cdisp = "block";
    pr.innerHTML = fc.textContent;
    // 同样赋值回元素
    fc.style.display = cdisp;
    fe.style.display = erdisp;
  }
}

关键改动说明

  • 给cdisp和erdisp加上let声明,限制变量作用域在函数内部
  • 在判断分支的最后,把修改后的cdisp和erdisp分别赋值给对应元素的style.display,让元素的显示状态更新
  • 现在点击按钮就能正常切换两个span的显示状态,同时更新下方pr区域的文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:07:06