当前位置:首页 > VUE

vue 实现答题功能

2026-02-18 12:36:05VUE

Vue 实现答题功能的方法

数据结构和状态管理

使用 Vue 的 dataref(Composition API)存储题目列表和用户答案。例如:

data() {
  return {
    questions: [
      { id: 1, text: "问题1", options: ["A", "B", "C"], correct: 0 },
      { id: 2, text: "问题2", options: ["A", "B"], correct: 1 }
    ],
    userAnswers: {}
  }
}

动态渲染题目

通过 v-for 循环渲染题目和选项,使用 v-model 绑定用户选择:

<div v-for="q in questions" :key="q.id">
  <h3>{{ q.text }}</h3>
  <div v-for="(opt, index) in q.options" :key="index">
    <input 
      type="radio" 
      :id="`q${q.id}_opt${index}`" 
      :value="index" 
      v-model="userAnswers[q.id]"
    >
    <label :for="`q${q.id}_opt${index}`">{{ opt }}</label>
  </div>
</div>

提交与验证逻辑

计算得分时遍历用户答案并与正确答案对比:

methods: {
  calculateScore() {
    return this.questions.reduce((score, q) => {
      return score + (this.userAnswers[q.id] === q.correct ? 1 : 0)
    }, 0)
  }
}

进度和结果展示

显示当前题号、总题数和最终结果:

vue 实现答题功能

<div>进度: {{ Object.keys(userAnswers).length }}/{{ questions.length }}</div>
<button @click="calculateScore">提交答案</button>
<div v-if="score !== null">得分: {{ score }}/{{ questions.length }}</div>

高级功能扩展

  • 题型支持:通过 question.type 字段区分单选、多选、填空等题型
  • 状态持久化:使用 localStorage 保存答题进度
  • 动画效果:通过 Vue 的 <transition> 添加题目切换动画
  • API 集成:使用 axios 动态加载题目数据

完整示例(Composition API)

<script setup>
import { ref } from 'vue'

const questions = ref([
  // 题目数据
])
const userAnswers = ref({})
const score = ref(null)

const submit = () => {
  score.value = questions.value.reduce((total, q) => {
    return total + (userAnswers.value[q.id] === q.correct ? 1 : 0)
  }, 0)
}
</script>

标签: 功能vue
分享给朋友:

相关文章

vue实现压缩上传文件

vue实现压缩上传文件

压缩上传文件的实现方法 在Vue中实现文件压缩和上传功能,可以通过以下步骤完成。该方法结合了前端文件压缩库和HTTP请求,确保文件在上传前被有效压缩。 安装必要的依赖 需要使用compressorj…

vue实现简单的弹窗

vue实现简单的弹窗

使用 Vue 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="modal-o…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…

vue实现keepalive

vue实现keepalive

Vue 中实现 keep-alive 在 Vue 中,keep-alive 是一个内置组件,用于缓存动态组件或组件的状态,避免重复渲染和销毁。以下是实现 keep-alive 的几种方法: 基本用法…