当前位置:首页 > JavaScript

js实现选词填空

2026-01-30 23:31:12JavaScript

实现选词填空的基本思路

选词填空的核心逻辑是通过JavaScript动态操作DOM元素,实现用户交互和答案验证。通常需要创建题目区域、可选词区域以及结果反馈机制。

HTML结构设计

基础的HTML结构包含题目展示区、可选词区和提交按钮:

<div id="question"></div>
<div id="options"></div>
<button id="submit">提交答案</button>
<div id="result"></div>

初始化题目数据

准备题目数据时,可以用占位符标记填空位置:

js实现选词填空

const quizData = {
  text: "JavaScript是一种__1__语言,常用于__2__开发。",
  answers: ["脚本", "Web"],
  options: ["编译", "脚本", "移动", "Web", "系统"]
}

动态生成填空题目

将原始文本中的占位符替换为可交互的空格:

function renderQuestion() {
  const questionText = quizData.text.replace(/__\d+__/g, 
    match => `<span class="blank" data-id="${match.slice(2, -2)}">______</span>`
  );
  document.getElementById('question').innerHTML = questionText;

  quizData.options.forEach(opt => {
    const btn = document.createElement('button');
    btn.className = 'option';
    btn.textContent = opt;
    btn.onclick = () => selectOption(opt);
    document.getElementById('options').appendChild(btn);
  });
}

处理选项选择

实现点击选项填充空白的功能:

js实现选词填空

function selectOption(selected) {
  const blanks = document.querySelectorAll('.blank');
  const firstEmpty = [...blanks].find(b => b.textContent === '______');

  if (firstEmpty) {
    firstEmpty.textContent = selected;
    firstEmpty.dataset.answer = selected;
  }
}

验证答案逻辑

提交时检查用户填写的答案是否正确:

document.getElementById('submit').addEventListener('click', () => {
  const blanks = document.querySelectorAll('.blank');
  let allCorrect = true;

  blanks.forEach(blank => {
    const id = blank.dataset.id;
    const correctAnswer = quizData.answers[id-1];
    if (blank.dataset.answer !== correctAnswer) {
      blank.style.color = 'red';
      allCorrect = false;
    } else {
      blank.style.color = 'green';
    }
  });

  document.getElementById('result').textContent = 
    allCorrect ? '全部正确!' : '请检查错误答案';
});

样式优化建议

添加CSS提升交互体验:

.blank {
  display: inline-block;
  min-width: 60px;
  border-bottom: 2px solid #333;
  text-align: center;
  margin: 0 5px;
}

.option {
  margin: 5px;
  padding: 8px 12px;
  background: #eee;
  border: none;
  cursor: pointer;
}

.option:hover {
  background: #ddd;
}

进阶功能扩展

  1. 拖拽填空:实现拖拽选项到空白处的交互
  2. 多题库支持:加载不同难度等级的题目
  3. 进度保存:使用localStorage保存用户答题进度
  4. 音效反馈:正确/错误时播放不同音效
  5. 自适应布局:确保在移动设备上正常显示

注意事项

  • 处理重复选项时需要考虑去重逻辑
  • 动态生成的元素需要正确绑定事件
  • 移动端需要额外处理触摸事件
  • 考虑无障碍访问需求,添加适当的ARIA属性

通过以上方法可以实现基础的选词填空功能,根据实际需求可以进一步扩展和完善交互细节。

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…