当前位置:首页 > VUE

vue实现单选答题功能

2026-01-23 07:09:31VUE

实现单选答题功能的基本思路

在Vue中实现单选答题功能,可以通过v-model绑定选项值,结合v-for渲染选项列表,并监听选择事件。以下是一个完整的实现示例。

创建答题组件

新建一个Vue单文件组件(如SingleChoice.vue),包含题目、选项列表和提交逻辑。

vue实现单选答题功能

<template>
  <div class="single-choice">
    <h3>{{ question.title }}</h3>
    <ul>
      <li v-for="(option, index) in question.options" :key="index">
        <input
          type="radio"
          :id="'option-' + index"
          :value="option.value"
          v-model="selectedOption"
        />
        <label :for="'option-' + index">{{ option.text }}</label>
      </li>
    </ul>
    <button @click="submitAnswer" :disabled="!selectedOption">提交</button>
    <p v-if="feedback">{{ feedback }}</p>
  </div>
</template>

定义组件数据与逻辑

<script>部分定义题目数据、选择状态和提交逻辑。

<script>
export default {
  data() {
    return {
      question: {
        title: "以下哪个是Vue的核心特性?",
        options: [
          { text: "双向数据绑定", value: "a" },
          { text: "虚拟DOM", value: "b" },
          { text: "组件化", value: "c" },
          { text: "以上都是", value: "d" }
        ],
        correctAnswer: "d"
      },
      selectedOption: null,
      feedback: ""
    };
  },
  methods: {
    submitAnswer() {
      if (this.selectedOption === this.question.correctAnswer) {
        this.feedback = "回答正确!";
      } else {
        this.feedback = "回答错误,请再试一次。";
      }
    }
  }
};
</script>

添加样式增强交互

<style>部分添加基础样式,提升用户体验。

vue实现单选答题功能

<style scoped>
.single-choice {
  max-width: 600px;
  margin: 0 auto;
  padding: 20px;
}
ul {
  list-style: none;
  padding: 0;
}
li {
  margin: 10px 0;
}
button {
  margin-top: 15px;
  padding: 8px 16px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
}
button:disabled {
  background-color: #cccccc;
}
</style>

动态加载题目数据

如需从后端API获取题目,可在created生命周期钩子中发起请求。

created() {
  fetch('/api/questions/1')
    .then(response => response.json())
    .then(data => {
      this.question = data;
    });
}

处理多题目场景

对于多题目切换,可以在父组件中维护题目列表和当前索引。

// 父组件
data() {
  return {
    questions: [...], // 题目数组
    currentIndex: 0
  };
},
methods: {
  nextQuestion() {
    if (this.currentIndex < this.questions.length - 1) {
      this.currentIndex++;
    }
  }
}
<!-- 父组件模板 -->
<single-choice :question="questions[currentIndex]" @answered="nextQuestion" />

注意事项

  • 确保每个radio的id属性唯一,避免点击冲突
  • 使用v-model时,绑定的数据初始值应为null而非空字符串
  • 对于无障碍访问,建议为选项添加aria-label描述
  • 复杂场景可考虑使用Vuex管理答题状态

以上实现涵盖了单选答题的核心功能,可根据实际需求扩展验证逻辑、动画效果或积分系统。

标签: 单选功能
分享给朋友:

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现产品使用功能

vue实现产品使用功能

Vue 实现产品功能的关键方法 组件化开发 使用Vue的单文件组件(.vue)将产品功能模块化,每个功能拆分为独立组件。例如产品列表、详情页、购物车等可分别封装为ProductList.vue、Pro…

vue 实现表格单选

vue 实现表格单选

实现表格单选的基本思路 在Vue中实现表格单选功能,通常需要结合表格组件(如el-table)和数据绑定。核心逻辑是通过点击事件更新当前选中行的唯一标识(如id),并通过:class或:style绑定…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

vue实现模态功能

vue实现模态功能

Vue 实现模态框功能 方法一:使用组件和v-if/v-show控制显示 创建独立的模态框组件(如Modal.vue),通过props接收标题、内容等数据,使用v-if或v-show控制显示状态。…

h5能实现抽题功能吗

h5能实现抽题功能吗

H5实现抽题功能的技术方案 H5完全能够实现抽题功能,主要通过前端技术结合后端数据交互完成。以下是具体实现方式: 前端技术实现 HTML5结合JavaScript可以动态生成和展示题目,利用DOM操…