当前位置:首页 > VUE

vue实现填空

2026-01-12 19:35:50VUE

Vue 实现填空功能的方法

在 Vue 中实现填空功能可以通过多种方式完成,以下是几种常见的实现方法:

使用双向绑定和计算属性

利用 Vue 的 v-model 实现填空内容的双向绑定,结合计算属性验证填空结果:

vue实现填空

<template>
  <div>
    <p>请填空:{{ question }}</p>
    <input v-model="userAnswer" placeholder="请输入答案">
    <p v-if="isCorrect">回答正确!</p>
    <p v-else>回答错误,请再试一次</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      question: 'Vue 是一个 __ 框架',
      correctAnswer: '前端',
      userAnswer: ''
    }
  },
  computed: {
    isCorrect() {
      return this.userAnswer === this.correctAnswer
    }
  }
}
</script>

动态渲染填空位置

使用 Vue 的插值和条件渲染动态显示填空位置和用户输入:

vue实现填空

<template>
  <div>
    <p>请填空:{{ questionPart1 }}<input v-model="userAnswer">{{ questionPart2 }}</p>
    <button @click="checkAnswer">提交</button>
    <p>{{ feedback }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      questionPart1: 'Vue 是一个 ',
      questionPart2: ' 框架',
      correctAnswer: '前端',
      userAnswer: '',
      feedback: ''
    }
  },
  methods: {
    checkAnswer() {
      this.feedback = this.userAnswer === this.correctAnswer 
        ? '回答正确!' 
        : '回答错误,正确答案是:' + this.correctAnswer
    }
  }
}
</script>

多填空题实现

对于多个填空题的情况,可以使用数组和循环来管理:

<template>
  <div>
    <div v-for="(item, index) in questions" :key="index">
      <p>{{ item.textBefore }}<input v-model="item.userAnswer">{{ item.textAfter }}</p>
    </div>
    <button @click="checkAll">检查所有答案</button>
    <p>{{ result }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      questions: [
        {
          textBefore: 'Vue 是一个 ',
          textAfter: ' 框架',
          correctAnswer: '前端',
          userAnswer: ''
        },
        {
          textBefore: 'Vue 的核心特性包括 ',
          textAfter: ' 和组件化',
          correctAnswer: '响应式',
          userAnswer: ''
        }
      ],
      result: ''
    }
  },
  methods: {
    checkAll() {
      const allCorrect = this.questions.every(q => q.userAnswer === q.correctAnswer)
      this.result = allCorrect ? '全部正确!' : '部分答案错误'
    }
  }
}
</script>

填空题自动评分

实现一个自动评分的填空系统,可以统计正确率:

<template>
  <div>
    <div v-for="(item, index) in questions" :key="index">
      <p>{{ item.textBefore }}<input v-model="item.userAnswer">{{ item.textAfter }}</p>
    </div>
    <button @click="calculateScore">计算分数</button>
    <p>得分:{{ score }} / {{ total }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      questions: [
        { textBefore: 'Vue 由 ', textAfter: ' 团队维护', correctAnswer: '尤雨溪', userAnswer: '' },
        { textBefore: 'Vue 最新版本是 ', textAfter: '', correctAnswer: '3', userAnswer: '' }
      ],
      score: 0,
      total: 2
    }
  },
  methods: {
    calculateScore() {
      this.score = this.questions.reduce((acc, curr) => {
        return acc + (curr.userAnswer === curr.correctAnswer ? 1 : 0)
      }, 0)
    }
  }
}
</script>

这些方法可以根据实际需求进行调整和组合,实现各种复杂的填空功能。对于更高级的需求,还可以考虑使用 Vue 的动态组件、插槽等特性来增强填空功能的灵活性和复用性。

标签: vue
分享给朋友:

相关文章

vue实现滚动中断

vue实现滚动中断

Vue 实现滚动中断的方法 在 Vue 中实现滚动中断通常涉及监听滚动事件,并在特定条件下阻止默认行为或停止滚动。以下是几种常见方法: 监听滚动事件并阻止默认行为 通过 @scroll 或 @wh…

vue实现压缩上传文件

vue实现压缩上传文件

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

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…