`
slbszq
  • 浏览: 268274 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

通过javascript对html里面关键词高亮显示

阅读更多

通过javascript对html里面内容进行高亮显示, 可以同时高亮多个关键字, 每个关键字以不同的颜色展示

代码如下:

/**
 * 高亮显示关键字, 构造函数
 * @param {} colors 颜色数组,其中每个元素是一个 '背景色,前景色' 组合
 */
var Highlighter = function(colors) {
	this.colors = colors;
	if (this.colors == null) {
		//默认颜色
		this.colors = 
			['#ffff00,#FF0000','#dae9d1,#FF0000','#eabcf4,#FF0000',
		     '#c8e5ef,#FF0000','#f3e3cb, #FF0000', '#e7cfe0,#FF0000',
		     '#c5d1f1,#FF0000','#deeee4, #FF0000','#b55ed2,#FF0000', 
		     '#dcb7a0,#FF0000', '#7983ab,#FF0000', '#6894b5, #FF0000'];
	}
};

/**
 * 高亮显示关键字
 * @param {} node    html element
 * @param {} keywords  关键字, 多个关键字可以通过空格隔开, 其中每个关键字会以一种颜色显式
 * 
 * 用法:
 * var hl = new Highlighter();
 * hl.highlight(document.body, '这个 世界 需要 和平');
 */
Highlighter.prototype.highlight = function(node, keywords) {
	if (!keywords || !node || !node.nodeType || node.nodeType != 1)
		return;
 
	keywords = this.parsewords(keywords);
	if (keywords == null)
		return;
 
	for (var i = 0; i < keywords.length; i++) {
		this.colorword(node, keywords[i]);
	}
};

/**
 * 对所有#text的node进行查找,如果有关键字则进行着色
 * @param {} node 节点
 * @param {} keyword 关键字结构体,包含了关键字、前景色、背景色
 */
Highlighter.prototype.colorword = function(node, keyword) {
	for (var i = 0; i < node.childNodes.length; i++) {
		var childNode = node.childNodes[i];
  
		if (childNode.nodeType == 3) {
			//childNode is #text
			var re = new RegExp(keyword.word, 'i');
			if (childNode.data.search(re) == -1) continue;
			re = new RegExp('(' + keyword.word + ')', 'gi');
			var forkNode = document.createElement('span');
			forkNode.innerHTML = childNode.data.replace(re, '<span style="background-color:'+keyword.bgColor+';color:'+keyword.foreColor+'" mce_style="background-color:'+keyword.bgColor+';color:'+keyword.foreColor+'">$1</span>');
			node.replaceChild(forkNode, childNode);
		} else if (childNode.nodeType == 1) {
			//childNode is element
			this.colorword(childNode, keyword);
		}
	}
};

/**
 * 将空格分隔开的关键字转换成对象数组
 * @param {} keywords
 * @return {}
 */
Highlighter.prototype.parsewords = function(keywords) {
	keywords = keywords.replace(/s+/g, ' ');
	keywords = keywords.split(' ');
	if (keywords == null || keywords.length == 0)
		return null;
 
	var results = [];
	for (var i = 0; i < keywords.length; i++) {
		var keyword = {};
		var color = this.colors[i % this.colors.length].split(',');
		keyword.word = keywords[i];
		keyword.bgColor = color[0];
		keyword.foreColor = color[1];
		results.push(keyword);
	}
	return results;
};

/**
 * 按照字符串长度,由长到短进行排序
 * @param {} list 字符串数组
 */
Highlighter.prototype.sort = function(list) {
	list.sort(function(e1, e2) {
		return e1.length < e2.length;
	});
};

 调用代码如下:

        var hl = new Highlighter();
        //document.body为dom对象,查找范围
	hl.highlight(document.body, $("#lighter_words").val());

 参考:

html dom: http://www.cnblogs.com/x116/articles/1083915.html

javascript 面向对象:http://www.cnblogs.com/Luoke365/archive/2007/08/04/842608.html

正则表达式:请看本blog关于javascript正则表达式的描述

javascript高亮:http://www.cnblogs.com/jenry/archive/2008/02/23/1078807.html

 

转自:http://blog.csdn.net/freewave/article/details/4277386 

分享到:
评论

相关推荐

    react中实现搜索结果中关键词高亮显示

    综上所述,React中实现搜索结果中关键词高亮显示涉及到对组件状态和属性的管理、使用filter函数过滤数组、正则表达式的应用、字符串的替换以及安全地处理HTML内容。这些知识点结合在一起,构成了一个完整的关键词...

    jQuery查找关键词文字高亮显示代码

    总结来说,这个“jQuery查找关键词文字高亮显示代码”是一个实用的交互功能,它通过jQuery实现了动态高亮显示搜索关键词,提升了用户查找信息的效率。通过理解并应用上述步骤,开发者可以轻松地将这个功能整合到自己...

    react-一个可以把文本中多个关键字高亮显示的react组件

    这个组件可以帮助开发者轻松地实现关键词高亮功能,提升用户在浏览和搜索文本时的体验。 首先,让我们了解React组件的基本概念。React是Facebook开源的一个JavaScript库,用于构建用户界面,尤其是单页应用。它采用...

    javascript实现页面内关键词高亮显示代码

    总结来说,本文通过介绍JavaScript实现关键词高亮显示的思路和代码,揭示了在网页开发中如何利用JavaScript操纵DOM元素和字符串处理,以实现增强用户体验的功能。掌握这些知识点对于Web开发者来说是十分重要的。

    jQuery查找关键词文字高亮显示代码.zip

    在这个名为"jQuery查找关键词文字高亮显示代码.zip"的压缩包中,包含了一个使用jQuery实现的搜索关键词高亮显示的示例。这个功能在很多场合都非常实用,比如搜索引擎结果展示或者文本搜索定位。 首先,`index.html`...

    使用 javascript 标记高亮关键词

     }在JavaScript中,对文本内容进行关键词高亮是一项常见的需求,特别是在搜索结果展示或者代码高亮时。本段代码提供了一个名为`MarkHighLight`的函数,它实现了对HTML元素内指定关键词的高亮标记功能。 首先,我们...

    jQuery关键词查找高亮显示代码.zip

    总结来说,这个项目提供了一种使用jQuery实现关键词查找并高亮显示的方法,对于学习jQuery的DOM操作、事件处理以及了解如何用JavaScript改进用户体验,都是很好的实例。通过深入理解并实践这个代码,开发者可以更好...

    页面sql编辑高亮显示

    总之,“页面SQL编辑高亮显示”是一个实用的Web开发工具,它结合了JavaScript和JSP技术,提供了实时的SQL语句高亮显示功能。开发者可以借此提高用户在网页上编写和查看SQL时的效率和舒适度。通过适配和扩展,还能...

    javascript关键字实时自动高亮

    标题中的“javascript关键字实时自动高亮”指的是在网页中,通过JavaScript编程技术实现实时检测并高亮显示特定关键字的功能。这种技术常用于突出显示页面上的重要信息,提高用户阅读体验,尤其在文档、博客或者论坛...

    js实现插入代码按代码格式关键词等高亮显示

    综上所述,"js实现插入代码按代码格式关键词等高亮显示"涵盖了从代码插入到格式化再到关键词高亮的一系列步骤,通过JavaScript和相关的库工具,我们可以创建出专业且美观的代码展示效果。在实际项目中,根据需求选择...

    易语言网页操作之网页查找并高亮显示结果

    通过这个控件,我们可以模拟浏览器的行为,如加载网页、执行JavaScript、获取网页内容等。 在"网页查找并高亮显示结果"这个项目中,我们需要实现的功能是查找指定文本在网页中的位置,并将其高亮显示。这涉及到两个...

    jQuery高亮关键词搜索

    在网页开发中,jQuery库因其简洁的语法和强大的功能,被广泛用于实现各种交互效果,其中之一就是“关键词高亮搜索”。jQuery高亮关键词搜索通常应用于搜索引擎或者文本内容展示页面,帮助用户快速定位到他们关心的...

    jquery高亮插件(支持textarea内容高亮)

    **jQuery高亮插件——实现文本高亮与关键词查找** jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画以及...在全文检索应用中,结合关键词高亮,能更直观地展示结果,增强交互效果。

    javascript关键字高亮代码

    文档中通过JavaScript实现了简单的关键词高亮功能。 #### HTML结构 文档首先定义了一个基本的HTML结构,包括`&lt;!DOCTYPE html&gt;`声明、`&lt;html&gt;`标签以及内部的`&lt;head&gt;`和`&lt;body&gt;`部分。其中`&lt;head&gt;`部分包含了元数据...

    jQuery关键词高亮

    jQuery关键词高亮是一种常见的网页开发技术,主要用于提升用户体验,使用户在浏览大量文本内容时能够快速定位到他们关心的...在网页开发中熟练运用jQuery关键词高亮,可以提升用户对网站的满意度,进一步优化用户体验。

    jQuery高亮显示关键词代码.zip

    本文将详细解析一个基于jQuery实现的高亮显示关键词代码,通过分析`index.html`和`css`文件,我们将深入理解其工作原理和应用方法。 一、jQuery简介 jQuery是一个高效、简洁的JavaScript库,它简化了HTML文档遍历、...

    搜索内容高亮显示

    在IT领域,搜索内容高亮显示是一个常见的功能,它增强了用户体验,使得用户在大量文本或数据中快速定位和识别搜索关键词。本示例主要探讨如何实现这个功能,以"搜索栏输入文字后,在内容中高亮显示搜索文字demo"为例...

    jquery text文本框搜索段落文本关键词文字高亮显示

    接下来,我们编写JavaScript代码,这部分代码主要使用jQuery监听文本框的`keyup`事件,每当用户输入时,触发搜索并高亮显示关键词。在`search_highlight.js`文件中写入以下内容: ```javascript $(document).ready...

    jQuery关键词查找高亮显示代码.rar_jquery 搜索高亮

    匹配到的关键词被包裹在`&lt;span&gt;`标签内,`class="highlight"`使得我们可以通过CSS控制高亮样式。 最后,为了使高亮效果美观,我们需要在CSS中定义`.highlight`类。例如: ```css .highlight { background-color: ...

    jQuery高亮显示关键词代码

    本教程将详细讲解如何利用jQuery实现高亮显示关键词的功能,以便于用户在搜索结果中快速定位到他们关心的关键词。 首先,我们需要了解jQuery的核心概念。jQuery对象是jQuery库的核心,它封装了DOM元素,使得操作DOM...

Global site tag (gtag.js) - Google Analytics