用Javascript实现关键词的高亮显示

  最近在搞一个网站,需要在内容区域高亮显示一些关键词。本来想在后台页面用c#实现,后来感觉这样做不太可取。因为我想高亮的高键词有n个之多,在服务端循环处理的话,势必会影响效率、占用服务器资源。所以,才考虑使用JS来实现,代码如下:

 一个小类(可以放置到一个*.js文件中)

     function  XP_Highlight()
ExpandedBlockStart.gifContractedBlock.gif    
{
        
this.KeyWords = null;
        
        
// 格式化关键词
        this.formatKeyword = function(content, keyword)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            keyword 
= keyword.replace(/(^\s*)|(\s*$)/g, "");
            
if(keyword == '')
                
return content;
            
var reg = new RegExp('('+keyword+')''gi');
            
return content.replace(reg, '<em>$1</em>');
        }

        
        
// 重绘内容区域
        this.refreshContent = function(contentID)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
var content = document.getElementById(contentID).innerHTML;
            
for(var i = 0; i < keywords.length; i ++)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
var strKey = keywords[i].toString();
                
var arrKey = strKey.split(',');
                
for(var j = 0; j < arrKey.length; j ++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    
var key = arrKey[j];
                    content 
= this.formatKeyword(content, key);
                }

            }

            document.getElementById(contentID).innerHTML 
= content;
        }

    }


页面调用:

     //  关键词定义
     var  keywords  =  
    [
        [
' 心情好转,好梦一场,,真不错,真好吃,哈哈,嘻嘻 ' ],
        [
' 头晕脑胀,疲乏气短,索然无味,,,折腾,生病,抱怨,疾病,累,疼,病 ' ],
        [
' 怎么了,啊,呀,喂 ' ]
    ];
    
    
ExpandedBlockStart.gifContractedBlock.gif    $(document).ready(
function () {
        
var hl = new XP_Highlight();
        hl.keywords 
= keywords; // 这里是关键词的定义
        hl.refreshContent(
'res'); // 这里是要格式化内容的元素Id号
    }
); 


CSS定义(可以设置多种风格,以支持不同类型的关键词):

em  {  font-size : small ;  color : #CC0033 ;  font-style : normal ;   }

 

结束语:

以上代码在 FF3.0 及 IE8兼容模式下测试通过。
如何各位有其他方法或建议的话,请在这里回复,先谢谢了!

转载于:https://www.cnblogs.com/jeky/archive/2009/03/13/1410914.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值