用JS将搜索的关键字高亮显示实现代码

上传者: 38740201 | 上传时间: 2025-06-03 17:38:53 | 文件大小: 25KB | 文件类型: PDF
用JS让文章内容指定的关键字加亮 是这样的.. 现在有这些关键字:美容,生活,购物当在文章里头出现这些关键字,就把它加亮显示.. 文章是生成静态页面的,而这些关键字是能随时更新的,所以我想用JS来实现…不知道怎样来实现这样的功能啊?特此求助 代码如下:[removed]function highlight(key) { var key = key.split(‘|’); for (var i=0; i<key.length; i++) {  var rng = document.body.createTextRange();  while (rng. 在网页开发中,有时我们需要对文章中的特定关键字进行高亮显示,以便用户更容易发现和理解。这在搜索结果展示、文章阅读或者数据分析等场景中非常常见。本文将介绍如何使用JavaScript来实现这样的功能,主要围绕提供的代码进行解析和扩展。 让我们分析给出的JavaScript函数`highlight(key)`。这个函数的主要目的是接收一个包含多个关键字的字符串,然后遍历整个文档,找到这些关键字并将其高亮显示。`key`参数是以竖线(`|`)分隔的关键词列表。 ```javascript function highlight(key) { var key = key.split('|'); // 将关键词字符串分割成数组 ``` 在这里,`split('|')`方法被用来将传入的字符串按照分隔符`|`切割成一个数组,例如`['美容', '生活', '购物']`。 接着,我们使用`for`循环遍历这个关键词数组: ```javascript for (var i = 0; i < key.length; i++) { var rng = document.body.createTextRange(); while (rng.findText(key[i])) { // rng.pasteHTML(rng.text.fontcolor('red')); rng.pasteHTML(''); } } ``` 在循环内部,我们创建了一个`TextRange`对象`rng`,它代表文档中的一段文本。`findText(key[i])`方法用于查找当前关键词`key[i]`在文档中的出现位置。如果找到,就会进入`while`循环,将找到的关键字替换为高亮显示的HTML元素。 原代码中注释掉的部分`rng.pasteHTML(rng.text.fontcolor('red'));`原本会将找到的关键字改为红色,但这里被替换为一个带有边框的红色`div`,并包裹在一个`a`标签内,这样不仅可以高亮显示,还可以为用户提供可点击的链接(尽管链接地址设为了`#`,即当前页面)。 ```javascript rng.pasteHTML(''); ``` 这段代码将替换掉找到的关键字,并为其添加样式和属性。`title`属性提供了关键词的工具提示,`display:inline`确保高亮部分保持在文本流中,而不会破坏布局。 调用`highlight`函数时,你需要提供一个包含所有关键字的字符串,如`highlight('文章|关键|功能')`。 然而,需要注意的是,上述代码仅适用于IE浏览器,因为它使用了`TextRange`对象,这是Internet Explorer特有的。对于其他浏览器,如Firefox、Chrome、Safari等,可以使用`document.querySelectorAll`或`NodeIterator`结合正则表达式来实现类似功能。 例如,我们可以使用`querySelectorAll`配合`innerText`属性和正则表达式来替换文本: ```javascript function highlightModern(key) { const keys = key.split('|'); const regex = new RegExp(keys.join('|'), 'gi'); const elements = document.querySelectorAll('body *'); // 获取所有元素 for (const element of elements) { if (element.nodeType === Node.TEXT_NODE) { const text = element.textContent; const replacedText = text.replace(regex, function (match) { return '' + match + ''; }); element.textContent = replacedText; } } } // 添加CSS样式 document.head.insertAdjacentHTML('beforeend', ` `); highlightModern('文章|关键|功能'); ``` 这段代码首先创建了一个正则表达式来匹配所有的关键词,然后遍历所有页面元素,将匹配到的关键字替换为带有`highlight`类的`span`标签。添加一个CSS样式,使高亮背景颜色为黄色。 总结来说,JavaScript的高亮显示功能可以通过多种方法实现,具体取决于目标浏览器和需求。在处理静态页面且关键词可能变化的情况下,动态使用JavaScript来实现关键词高亮是一种可行的解决方案。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明