当前位置:首页 > 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>

初始化题目数据

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

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);
  });
}

处理选项选择

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

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实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在H…