如何在点击器游戏中满足rebirths条件前隐藏导航标签页
解决导航标签页的条件隐藏问题
首先,问题的核心是你之前依赖getElementById来控制元素显示,但非首页的导航标签没有设置id,导致JS无法定位到这些元素进行状态修改。咱们可以通过以下步骤来快速修复:
第一步:给需要隐藏的导航项添加统一标识
修改所有页面的导航HTML,给除了Home之外的每个导航项所在的<li>标签添加一个专属class(比如locked-nav-item),这样就能批量选中这些需要控制的元素:
<!-- 第一个页面的导航修改后 --> <div class="nav_bar"> <ul> <li><a href="GameMainWindow.html" id="onlink">Home</a></li> <li class="locked-nav-item"><a href="SkillTree.html">SkillTree</a></li> <li class="locked-nav-item"><a href="Equipment.html">Equipment</a></li> <li class="locked-nav-item"><a href="Pets.html">Pets</a></li> <li class="locked-nav-item"><a href="Skills.html">Skills</a></li> <li class="locked-nav-item"><a href="Quests.html">Quests</a></li> </ul> </div> <!-- 第二个页面的导航同步修改 --> <div class="nav_bar"> <ul> <li><a href="GameMainWindow.html">Home</a></li> <li class="locked-nav-item"><a href="SkillTree.html">SkillTree</a></li> <li class="locked-nav-item"><a href="Equipment.html">Equipment</a></li> <li class="locked-nav-item"><a href="Pets.html">Pets</a></li> <li class="locked-nav-item"><a href="Skills.html" id="onlink">Skills</a></li> <li class="locked-nav-item"><a href="Quests.html">Quests</a></li> </ul> </div>
第二步:编写导航解锁的JavaScript逻辑
沿用你之前控制矿石显示的思路,写一个专门控制导航显示的函数,通过document.querySelectorAll批量获取所有锁定的导航项,再根据rebirths数值判断是否解锁:
// 获取所有需要隐藏的导航项 const lockedNavItems = document.querySelectorAll('.locked-nav-item'); // 定义检查导航解锁状态的函数,替换成你的rebirths阈值(比如这里设为5) function checkUnlockNav() { lockedNavItems.forEach(item => { if (rebirths >= 5) { // 这里改成你需要的重生次数要求 item.style.visibility = 'visible'; } else { item.style.visibility = 'hidden'; } }); } // 页面加载时立即执行,确保初始状态正确 window.onload = function() { checkUnlockNav(); }; // 记得在rebirths数值变化时调用这个函数,比如重生完成后: // rebirths++; // checkUnlockNav();
进阶优化:给不同导航项设置不同解锁阈值
如果想让不同的导航页面对应不同的重生次数要求,可以给每个<li>添加自定义属性,让逻辑更灵活:
<li class="locked-nav-item" data-rebirth-need="3"><a href="SkillTree.html">SkillTree</a></li> <li class="locked-nav-item" data-rebirth-need="5"><a href="Equipment.html">Equipment</a></li>
对应的JS修改:
function checkUnlockNav() { lockedNavItems.forEach(item => { const requiredRebirths = parseInt(item.dataset.rebirthNeed); if (rebirths >= requiredRebirths) { item.style.visibility = 'visible'; } else { item.style.visibility = 'hidden'; } }); }
最后建议把这段JS放到一个共用的文件(比如gameControls.js)里,然后在所有页面的<head>里引入,避免重复代码:
<script src="js/gameControls.js"></script>
这样修改后,初始状态下除首页外的所有导航都会被隐藏,当玩家的重生次数达到设定阈值后,对应标签就会自动显示出来了。
内容的提问来源于stack exchange,提问作者tmanrocks994
相关产品推荐
相关产品推荐

