用js 如何实现快速过滤关键字(并高亮显示关键字)。。javascript厉害的高手来瞧瞧

比如用户可以输入6万字。。一共有6百个关键字。在用户按下键盘(onkeydown)事件去判断用户有没有输入这些关键字。。只要输入就高亮显示这些关键字。。做到及时高亮关键字... 比如用户可以输入6万字。。一共有6百个关键字。在用户按下键盘(onkeydown)事件去判断用户有没有输入这些关键字。。只要输入就高亮显示这些关键字。。做到及时高亮关键字。。。有没有高效的方法。。

用正则表达式,在IE下还是不理想,超过了一秒
前端开发
展开
 我来答
帮助_li
2013-03-10 · TA获得超过2140个赞
知道大有可为答主
回答量:1288
采纳率:65%
帮助的人:678万
展开全部
var input='这是一大段文本';
var keys=['这是','这里是','文本','一'];

var prepareKeys=function(){
if(!prepareKeys.$map){
var map={};
var maxLength=0;
for(var i=0;i<keys.length;i++){
map[keys[i]]=1;
maxLength=Math.max(keys[i].length,maxLength);
}
prepareKeys.$map={
map:map,
length:maxLength
}
}
return prepareKeys.$map;
}

var colorKeyword=function(str){
var info=prepareKeys();
var output=[];
while(str){
var sub=str.substring(0,info.length);
str=str.substring(info.length);
while(!info.map[sub]&&sub){
str=sub.charAt(sub.length-1)+str;
sub=sub.slice(0,-1);
console.log(sub);
}
console.log('color',sub);
if(sub){
output.push('#',sub,'#');
}else{
output.push(str.charAt(0));
str=str.substring(1);
}
}
return output.join('');
}
colorKeyword(input);
追问
妙啊。。高手
追答
谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式