You need to enable JavaScript to run this app. JavaScript新手按钮切换段落内容时if判断始终进入else分支问题
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript新手按钮切换段落内容时if判断始终进入else分支问题

问题根源说明

你当前写的判断逻辑存在根本性的认知偏差,这也是导致代码永远跳过if分支进else的直接原因:

你在beginWalk函数中尝试通过getElementById获取id为yes的按钮后,判断其click属性是否为true——实际上DOM元素原生的click是一个用于主动触发元素点击行为的方法,根本不是记录“用户是否点击了该按钮”的布尔值,这个判断条件从语法上就永远不可能成立,因此代码会直接跳过if分支执行else逻辑。

适配你现有代码结构的修正方案

不需要完全推翻之前写的内容,只要把判断逻辑替换掉即可,改完就能正常运行:

  • 最省事的改法:给绑定的函数传参,不用额外读取DOM状态
    把两个按钮的onclick绑定改成传不同的标记值:
    <button id="yes" onclick="beginWalk('yes')">是</button>
    <button id="no" onclick="beginWalk('no')">否</button>
    
    对应的JS函数修改为:
    function beginWalk(choice) {
      const changeTarget = document.getElementById('change');
      if (choice === 'yes') {
        // 点击是按钮时的文本切换逻辑
        changeTarget.innerHTML = "你顺着步道走到了岔路口,前方隐约能看到废弃小屋的轮廓";
      } else {
        // 点击否按钮时的文本切换逻辑
        changeTarget.innerHTML = "你转身往回走,裤脚突然被什么东西勾住了";
      }
    }
    
  • 如果想保留原来两个按钮绑定同一个无参beginWalk函数的写法,就不用去判断元素的click属性,直接在函数内获取当前获得焦点的按钮元素做判断即可:
    function beginWalk() {
      const currentBtn = document.activeElement;
      const changeTarget = document.getElementById('change');
      if (currentBtn.id === 'yes') {
        changeTarget.innerHTML = "你选择继续往前走,踩碎了一地干枯的橡果";
      } else {
        changeTarget.innerHTML = "你停下脚步,听见身后传来细微的脚步声";
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 11:54:02