当前位置:首页 > JavaScript

js实现电子书页面搜索

2026-01-31 12:10:31JavaScript

实现电子书页面搜索的步骤

准备工作
确保电子书内容已加载到网页中,可以是纯文本、HTML格式或通过API获取的数据。搜索功能通常需要遍历文本内容并高亮显示匹配项。

HTML结构示例
创建一个搜索框和结果显示区域:

<input type="text" id="searchInput" placeholder="输入搜索内容">
<button id="searchButton">搜索</button>
<div id="ebookContent">这里是电子书文本内容...</div>

JavaScript实现搜索逻辑
监听搜索按钮点击事件,获取输入内容并执行搜索:

document.getElementById('searchButton').addEventListener('click', function() {
  const searchTerm = document.getElementById('searchInput').value.trim();
  if (searchTerm) {
    searchEbookContent(searchTerm);
  }
});

function searchEbookContent(searchTerm) {
  const ebookContent = document.getElementById('ebookContent');
  const content = ebookContent.textContent || ebookContent.innerText;
  const regex = new RegExp(searchTerm, 'gi');
  const highlightedContent = content.replace(regex, match => `<span class="highlight">${match}</span>`);
  ebookContent.innerHTML = highlightedContent;
}

高亮样式
添加CSS样式以突出显示搜索结果:

.highlight {
  background-color: yellow;
  font-weight: bold;
}

优化搜索性能
对于大型电子书,考虑分页或懒加载内容,避免一次性处理过多文本:

function searchInChunks(content, searchTerm) {
  const chunkSize = 10000; // 分块大小
  let result = '';
  for (let i = 0; i < content.length; i += chunkSize) {
    const chunk = content.substring(i, i + chunkSize);
    result += chunk.replace(new RegExp(searchTerm, 'gi'), match => `<span class="highlight">${match}</span>`);
  }
  return result;
}

添加搜索导航
实现上一个/下一个匹配项导航功能:

let currentMatchIndex = 0;
let matches = [];

function navigateSearch(direction) {
  if (matches.length === 0) return;
  currentMatchIndex = (currentMatchIndex + direction + matches.length) % matches.length;
  matches[currentMatchIndex].scrollIntoView({ behavior: 'smooth', block: 'center' });
}

注意事项

  • 对特殊字符进行转义,避免正则表达式错误
  • 考虑添加搜索选项(如区分大小写、全字匹配)
  • 对于动态加载的电子书,确保内容完全加载后再执行搜索

js实现电子书页面搜索

标签: 电子书页面
分享给朋友:

相关文章

h5实现登录页面跳转

h5实现登录页面跳转

实现登录页面跳转的基本方法 使用HTML5和JavaScript实现登录页面跳转,可以通过表单提交或JavaScript事件触发。以下是几种常见方式: 表单提交跳转 在HTML中创建一个表单,通过a…

h5实现页面切换

h5实现页面切换

h5实现页面切换的方法 在H5中实现页面切换可以通过多种方式完成,包括使用原生HTML链接、JavaScript动态加载、框架路由等。以下是几种常见的方法: 使用原生HTML的<a>标…

vue实现页面定位

vue实现页面定位

Vue 实现页面定位的方法 使用 scrollIntoView 方法 通过 JavaScript 的 scrollIntoView 方法可以实现平滑滚动到指定元素位置。在 Vue 中,可以通过 ref…

vue页面实现日历

vue页面实现日历

实现基础日历布局 使用Vue的模板语法构建日历的基本HTML结构,通常需要包含星期标题和日期格子。月份切换按钮可以通过v-on绑定事件。 <template> <div cla…

vue实现页面刻度

vue实现页面刻度

实现页面刻度的基本思路 在Vue中实现页面刻度通常用于展示进度、测量或标记特定位置。可以通过动态计算和渲染刻度元素来实现,结合CSS样式控制显示效果。 使用动态渲染刻度线 通过v-for指令动态生…

vue页面实现pdf

vue页面实现pdf

在Vue中实现PDF功能 使用vue-pdf库 安装vue-pdf库: npm install vue-pdf 在Vue组件中使用: <template> <pdf :s…