当前位置:首页 > 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提升交互体验:

js实现选词填空

.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实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…