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

Vue.js新手求助:如何通过下拉框控制div元素的显示与隐藏?

修正你的Vue下拉框控制显示隐藏问题

你的代码核心问题在于下拉框的事件处理逻辑错误,同时可以用Vue更简洁的特性实现需求,以下是具体修正方案:

问题分析

  • 你在@change事件中传入了true,但genderSelected函数试图访问pick.value——布尔值true并没有value属性,导致逻辑完全无法执行。
  • Vue提供的v-model可以直接绑定下拉框的选中值到响应式变量,无需手动编写事件处理函数,代码更简洁可靠。

修正后的完整代码

模板部分

<template>
  <select
    class="form-select"
    aria-label="Default select example"
    name="filter"
    v-model="gender"
  >
    <option value="Male">Male</option>
    <option value="Female">Female</option>
  </select>

  <!-- 控制显示的区域 -->
  <div v-if="gender === 'Male'">Male</div>
  <div v-if="gender === 'Female'">Female</div>
</template>

脚本部分

<script>
import { ref } from "vue";

export default {
  setup() {
    const gender = ref("Male");
    // 无需额外的genderSelected函数,v-model会自动同步选中值到gender

    return {
      gender,
    };
  },
};
</script>

若坚持手动处理change事件(不推荐)

如果一定要保留事件处理的写法,需修正传参和函数逻辑:

<!-- 模板中传入选中的目标值 -->
<select
  class="form-select"
  aria-label="Default select example"
  name="filter"
  @change="genderSelected($event.target.value)"
>
  <option value="Male">Male</option>
  <option value="Female">Female</option>
</select>
// 脚本中修改函数逻辑
const genderSelected = (pick) => {
  gender.value = pick; // 直接赋值选中值,无需多余判断
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:01:56