[转]页面关键字高亮highlight的js代码

我的实际代码是通过接受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>
高亮代码中的正则表达式可以根据自己的需要修改,我对正则也不太了解,可能会有错,我自己的还能用,就凑合了.
posted @ 2009-04-22 12:22  梳子  阅读(763)  评论(1编辑  收藏  举报