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

Vue3实现点击按钮显示对应DIV并隐藏其余元素的问题求助

问题点说明

  • 动态属性访问逻辑错误:boxes.box.isHidden写法是读取boxes下固定名为box的属性,无法匹配你传入的动态变量,同时Vue实例中访问data内的属性需要加this前缀。
  • 缺少其余元素的隐藏逻辑:需要先将所有DIV的隐藏状态设为true,再将目标DIV设为显示。

原逻辑修复方案

仅修改showBox方法即可让现有代码正常运行:

methods: {
    showBox(box) {
        // 遍历所有box,统一设为隐藏
        Object.keys(this.boxes).forEach(boxKey => {
            this.boxes[boxKey].isHidden = true
        })
        // 用方括号语法访问动态属性,将目标box设为显示
        this.boxes[box].isHidden = false
    }
}

更简洁的优化方案

你可以简化状态管理,不需要为每个DIV单独维护isHidden属性,仅存储当前激活的DIV标识即可:

1. 修改data结构

data () {
    return {
        buttons: [
            { text: 'About', link: 'about' }, 
            { text: 'Resume', link: 'resume' },
            { text: 'Contact', link: 'contact' },
        ],
        // 存储当前激活的DIV标识,默认展示about
        activeLink: 'about'
    }
}

2. 修改showBox方法

methods: {
    showBox(link) {
        this.activeLink = link
    }
}

3. 修改模板中DIV的类绑定逻辑

<div id="about" :class="{ hidden: activeLink !== 'about' }">
    About me
</div>
<div id="resume" :class="{ hidden: activeLink !== 'resume' }">
    Resume
</div>
<div id="contact" :class="{ hidden: activeLink !== 'contact' }">
    Contact
</div>

该方案减少了冗余状态,维护成本更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:39:04