JS 关键词高亮、可穿透 Textarea

/*

KeyWord_Highlight(document.body, '吗?',"","");
参数1:高亮范围容器

参数2:高亮关键词(多个请用 | 分开)

参数3:高亮颜色(可省略,默认为红色)

参数4:高亮点击地址(可省略,默认为无链接,与高亮关键词匹配填写。)

*/

///关键字高亮
function KeyWord_Highlight(o, flag, rndColor, url)
{
var bgCor="";
var fgCor='';
if(rndColor)
{
bgCor=fRndCor(10, 20);
fgCor=fRndCor(230, 255);
}
else
{
bgCor='red';
fgCor='white';
}
var re=new RegExp(flag, 'i');
for(var i=0; i<o.childNodes.length; i++)
{
var o_=o.childNodes[i];
var o_p=o_.parentNode;
if(o_.nodeType==1)
{
KeyWord_Highlight(o_, flag, rndColor, url);
}
else if (o_.nodeType==3)
{
if(!(o_p.nodeName=='A'))
{
if(o_.data.search(re)==-1)
{
continue;
}
var temp=fEleA(o_.data, flag);
o_p.replaceChild(temp, o_);
}
}
}

function fEleA(text, flag)
{
var style=' style="background-color:'+bgCor+';color:'+fgCor+';" '
var o=document.createElement('span');
var str='';
var re=new RegExp('('+flag+')', 'gi');
if(url)
{
str=text.replace(re, '<a href="'+url+ '"'+style+'>$1</a>');
}
else
{
str=text.replace(re, '<span '+style+'>$1</span>');
}
o.innerHTML=str;
return o;
}

function fRndCor(under, over)
{
if(arguments.length==1)
{
var over=under;
under=0;
}
else if(arguments.length==0)
{
var under=0;
var over=255;
}
var r=fRandomBy(under, over).toString(16);
r=padNum(r, r, 2);
var g=fRandomBy(under, over).toString(16);
g=padNum(g, g, 2);
var b=fRandomBy(under, over).toString(16);
b=padNum(b, b, 2);
return '#'+r+g+b;
function fRandomBy(under, over)
{
switch(arguments.length)
{
case 1: return parseInt(Math.random()*under+1);
case 2: return parseInt(Math.random()*(over-under+1) + under);
default: return 0;
}
}
function padNum(str, num, len)
{
var temp=''
for(var i=0; i<len;temp+=num, i++);
return temp=(temp+=str).substr(temp.length-len);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值