当前位置:首页 > VUE

vue实现填空题

2026-01-20 22:39:24VUE

Vue实现填空题的基本思路

填空题的实现通常需要结合Vue的数据绑定、事件处理和动态渲染特性。以下是一个基于Vue 2或Vue 3的实现方案。

核心代码实现

模板部分(Template)

<template>
  <div class="fill-blank-container">
    <div v-for="(blank, index) in blanks" :key="index" class="blank-item">
      <span>{{ blank.textBefore }}</span>
      <input 
        v-model="blank.userAnswer" 
        @input="checkAnswer(index)"
        :class="{ correct: blank.isCorrect, incorrect: !blank.isCorrect && blank.userAnswer }"
      />
      <span>{{ blank.textAfter }}</span>
    </div>
    <div v-if="allCorrect" class="feedback">全部正确!</div>
  </div>
</template>

脚本部分(Script)

<script>
export default {
  data() {
    return {
      blanks: [
        {
          textBefore: "Vue是一个",
          textAfter: "框架",
          correctAnswer: "渐进式",
          userAnswer: "",
          isCorrect: false
        },
        {
          textBefore: "Vue的核心特性包括",
          textAfter: "和组件化",
          correctAnswer: "响应式",
          userAnswer: "",
          isCorrect: false
        }
      ],
      allCorrect: false
    };
  },
  methods: {
    checkAnswer(index) {
      const blank = this.blanks[index];
      blank.isCorrect = blank.userAnswer === blank.correctAnswer;
      this.allCorrect = this.blanks.every(b => b.isCorrect);
    }
  }
};
</script>

样式设计建议

<style scoped>
.fill-blank-container {
  font-size: 16px;
  line-height: 2;
}

.blank-item {
  margin-bottom: 10px;
}

input {
  border: 1px solid #ddd;
  padding: 4px 8px;
  border-radius: 4px;
}

input.correct {
  border-color: green;
  background-color: #e8f5e9;
}

input.incorrect {
  border-color: red;
  background-color: #ffebee;
}

.feedback {
  color: green;
  font-weight: bold;
  margin-top: 20px;
}
</style>

功能扩展建议

动态生成填空题 可以通过API获取题目数据,实现动态渲染:

vue实现填空题

async created() {
  try {
    const response = await fetch('/api/fill-blank-questions');
    this.blanks = await response.json();
  } catch (error) {
    console.error('获取题目失败:', error);
  }
}

添加提交按钮

<button @click="submitAll" :disabled="!allFilled">提交答案</button>

添加计分功能

computed: {
  score() {
    return this.blanks.filter(b => b.isCorrect).length;
  },
  total() {
    return this.blanks.length;
  }
}

注意事项

  1. 对于需要模糊匹配的答案(如大小写不敏感),可以在检查时统一转为小写:

    vue实现填空题

    blank.isCorrect = blank.userAnswer.toLowerCase() === blank.correctAnswer.toLowerCase();
  2. 考虑添加输入提示功能,当用户输入错误时显示正确答案提示。

  3. 对于移动端适配,可以增加输入框的点击区域大小。

  4. 如果需要保存用户进度,可以使用localStorage存储用户答案。

标签: 填空题vue
分享给朋友:

相关文章

vue搜索过后实现分页

vue搜索过后实现分页

Vue 实现搜索后分页功能 数据绑定与搜索逻辑 在 Vue 组件中定义必要的数据属性: data() { return { searchQuery: '', currentPag…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript 图表…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: &l…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue实现滑块

vue实现滑块

Vue 实现滑块组件的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和事件监听实现基础滑块功能。创建一个包含 input 元素的组件,类型设置为 range,并绑定到…