JS实现静态页面搜索并高亮显示功能完整示例

下面是JS实现静态页面搜索并高亮显示功能的完整攻略。

1. 理解需求

我们需要实现一个静态页面内的搜索功能,当用户在搜索框中输入关键词后,页面中相关内容需要被高亮显示。

2. 编写HTML结构和样式

需要准备一个HTML文件,其中包含一个搜索框和搜索结果的展示区域。可以参考如下HTML代码:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>搜索功能示例</title>
    <style>
        .search {
            margin: 20px auto;
            width: 600px;
            text-align: center;
        }
        .search input[type="text"] {
            width: 300px;
            height: 30px;
            padding: 0 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
        }
        .result {
            margin: 20px auto;
            width: 600px;
            line-height: 30px;
        }
        .highlight {
            color: red;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div class="search">
        <input type="text" id="searchInput" placeholder="请输入关键词">
        <button onclick="search()">搜索</button>
    </div>
    <div class="result" id="result"></div>
</body>
</html>

3. 实现搜索功能

在HTML文件中添加JavaScript代码,实现搜索功能。具体代码如下:

function search() {
  // 获取搜索关键词和结果展示区域
  var keyword = document.getElementById('searchInput').value.trim();
  var resultArea = document.getElementById('result');

  // 如果关键词为空,直接返回
  if (keyword === '') {
    resultArea.innerHTML = '';
    alert('请输入搜索关键词');
    return;
  }

  // 获取所有内容元素
  var elements = document.querySelectorAll('.content');

  // 遍历每一个内容元素,查找是否包含关键词
  for (var i = 0; i < elements.length; i++) {
    var content = elements[i].innerHTML;
    if (content.indexOf(keyword) !== -1) {
      // 如果包含关键词,将内容区域改为高亮显示
      content = content.replace(keyword, '<span class="highlight">' + keyword + '</span>');
      elements[i].innerHTML = content;
      resultArea.appendChild(elements[i].cloneNode(true));
    }
  }

  // 隐藏不包含关键词的元素
  for (var i = 0; i < elements.length; i++) {
    if (elements[i].innerHTML.indexOf(keyword) === -1) {
      elements[i].style.display = 'none';
    }
  }
}

4. 示例说明

以下是两个示例说明。

示例一

在上面的HTML文件中,新增如下内容:

<div class="content">
  <h2>HTML</h2>
  <p>HTML (HyperText Markup Language) 是用来描述网页的一种语言。</p>
</div>
<div class="content">
  <h2>CSS</h2>
  <p>CSS (Cascading Style Sheets) 是用来描述网页外观样式的语言。</p>
</div>
<div class="content">
  <h2>JavaScript</h2>
  <p>JavaScript 是一种可以在网页中实现交互效果的编程语言。</p>
</div>

当用户在搜索框中输入“CSS”时,结果区域展示出:

CSS (Cascading Style Sheets) 是用来描述网页外观样式的语言。

另外两个不包含关键词的内容区域被隐藏。

示例二

在另一个HTML文件中,新增如下内容:

<div class="content">
  <h2>HTML</h2>
  <p>HTML (HyperText Markup Language) 是用来描述网页的一种语言。</p>
</div>
<div class="content">
  <h2>CSS</h2>
  <p>CSS (Cascading Style Sheets) 是用来描述网页外观样式的语言。</p>
</div>
<div class="content">
  <h2>JavaScript</h2>
  <p>JavaScript 是一种可以在网页中实现交互效果的编程语言。</p>
</div>

当用户在搜索框中输入“JavaScript”时,结果区域展示出:

HTML (HyperText Markup Language) 是用来描述网页的一种语言。
CSS (Cascading Style Sheets) 是用来描述网页外观样式的语言。
JavaScript 是一种可以在网页中实现交互效果的编程语言。

将所有内容区域中“JavaScript”关键词标红高亮显示。

以上是JS实现静态页面搜索并高亮显示功能的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现静态页面搜索并高亮显示功能完整示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery Mobile漏洞会有跨站脚本攻击风险

    jQuery Mobile是一个流行的库,用于开发移动应用程序的用户界面。在其早期版本中,存在一个已知的漏洞,该漏洞可导致跨站脚本攻击(XSS)风险。 攻击者可以利用这个漏洞来注入恶意脚本代码,从而危及您的网站的安全。为了防止此类攻击,您可以使用以下攻略: 升级jQuery Mobile至最新版本 升级到最新的jQuery Mobile版本,以避免已知的漏洞…

    jquery 2023年5月28日
    00
  • jQWidgets jqxComboBox placeHolder属性

    以下是关于“jQWidgets jqxComboBox placeHolder属性”的完整攻略,包含两个示例说明: 简介 jqxComboBox 控件提供了 placeHolder 属性,用在下拉列表中显示占位符。通过使用 placeHolder 属性,我们可以在下拉列表中显示提示文本,以便用户更好地理解下拉列表的用途。 详细攻略 以下是 jqxComboB…

    jquery 2023年5月11日
    00
  • jQuery get和post 方法传值注意事项

    jQuery get和post 方法传值注意事项 在使用jQuery中的get和post方法进行服务器数据请求时,需要注意一些细节。本文将从常见问题入手,探讨jQuery中使用get和post方法传值的注意事项。 常见问题 参数传值不成功 在使用get和post方法进行服务器数据请求时,传值可能会出现问题。常见表现为参数为空,或者传入后台参数与前端定义的不一…

    jquery 2023年5月18日
    00
  • jquery事件机制扩展插件 jquery鼠标右键事件。

    以下是 jQuery 事件机制扩展插件和鼠标右键事件的详细攻略。 jQuery事件机制扩展插件 在 jQuery 事件机制中,事件通常分为三个阶段:捕获阶段、目标阶段和冒泡阶段。然而,并不是所有的事件都支持这三个阶段,有些事件只支持一个或两个阶段。但是我们可以通过扩展 jQuery 的事件机制来支持更多的阶段或自定义事件。 扩展单个元素的事件机制 我们可以通…

    jquery 2023年5月18日
    00
  • jQWidgets jqxMenu初始化事件

    以下是关于 jQWidgets jqxMenu 组件中初始化事件的详细攻略。 jQWidgets jqxMenu 初始化事件 jQWidgets jqxMenu 组件的初始化事件是在菜单组件被初始化时触发的事件。您可以使用该事件来执行一些初始化操作,例如设置默认值、绑定事件等。 语法 $(‘#menu’).on(‘initialized’, () { // …

    jquery 2023年5月12日
    00
  • jQWidgets jqxDateTimeInput rtl属性

    以下是关于“jQWidgets jqxDateTimeInput rtl属性”的完整攻略,包含两个示例说明: 属性简介 jqxDateTimeInput 控件的 rtl 属性用于设置日期时间输入框是否启用从右到左的文本方向。该属性的语法如下: $("#jqxDateTimeInput").jqxDateTimeInput({ rtl: }…

    jquery 2023年5月10日
    00
  • 如何使用jQuery禁用浏览器的返回按钮

    要使用jQuery禁用浏览器的返回按钮,我们可以使用以下步骤: 使用history.pushState()函数将当前页面的状态添加到浏览器的历史中。 使用window.addEventListener()函数监听浏览器的popstate事件。 在popstate事件处理程序中,使用history.pushState()函数将当前页面的状态再次添加到浏览器的历…

    jquery 2023年5月9日
    00
  • 使用jQuery实现返回顶部

    下面是“使用jQuery实现返回顶部”的完整攻略: 1. 在HTML文件中引入jQuery库 “`html <script src=”https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js”></script> “` 2. 创建返回顶部按钮 将以下代码添加到HTML…

    jquery 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部