我的实际代码是通过接受querystring传过来的关键字,进行页面关键字高亮,因为是其他页面的查询跳转过来的.
当然也可以根据具体需要改成其他的,比如从当前页面的某个textbox中取关键字高亮,只需要把getQueryString(name)
这个函数改写一下,由控件ID或name取得控件中的内容,进行高亮.
<script language="javascript" type="text/javascript">
//页面读取完进行高亮
document.onload = HighLightMain();
function HighLightMain()
{
HighLightSearchkey('<%=QuestionTXT.ClientID %>');
HighLightSearchkey('<%=AnswerTXT.ClientID %>');
}
//取得QueryString
function getQueryString(name)
{
var url=location.search;
var Request = new Object();
if(url.indexOf("?")!=-1)
{
var str = url.substr(1);
strs = str.split("&");
for(var i=0;i<strs.length;i++)
{
Request[strs[i].split("=")[0]] = decodeURIComponent(strs[ i].split("=")[1]);
}
}
var qstr = Request[name];
return qstr;
}
//高亮关键字
function HighLightSearchkey(areaID)
{
if (!document.createElement)
{
return;
}
//从QueryString得到查询关键字
var searchkey = getQueryString("key");
if("" == searchkey) return;
//高亮
var cont = document.getElementById(areaID);
//var reg = new RegExp(searchkey+"(?=[^<>]*<)","ig");
var reg = new RegExp("("+searchkey+")","ig");
cont.innerHTML = cont.innerHTML.replace(reg,"<span style='background-color:Yellow'>"+
searchkey +"</span>");
}
</script>
高亮代码中的正则表达式可以根据自己的需要修改,我对正则也不太了解,可能会有错,我自己的还能用,就凑合了.