十载风雨路 · 匠心铸精品

量身定制 追求完美

易优搜索功能关键词高亮JS代码

 作者:彭sir 发布日期:2020-05-22 22:30:40 浏览:

<div id="result">

    {eyou:list pagesize="10" titlelen="30" empty='<li class="lby">没有数据了</li>'}

        列表代码

    {/eyou:list}

</div>


第一种:依靠正则表达式修改

1.获取obj的html

2.统一替换html标签

3.替换要修改的关键字

4.再把html标签修改回去

不足就是如果查找的关键字跟替换的标签一样就有冲突了

<script>  

 function keyLight(id, key, bgColor){

   var oDiv = document.getElementById(id),

       sText = oDiv.innerHTML,

       bgColor = bgColor || "red", 

       Colorr = Colorr || "white",

       sKey = "<span style='background-color: "+bgColor+";color: "+Colorr+";'>"+key+"</span>",

       num = -1,

       rStr = new RegExp(key, "g"),

       rHtml = new RegExp("\<.*?\>","ig"), //匹配html元素

       aHtml = sText.match(rHtml); //存放html元素的数组

   sText = sText.replace(rHtml, '{~}');  //替换html标签

   sText = sText.replace(rStr,sKey); //替换key

   sText = sText.replace(/{~}/g,function(){  //恢复html标签

     num++;

     return aHtml[num];

   });

   oDiv.innerHTML = sText;

 }

 var key1 = keyLight('result', '{$eyou.field.keywords}')

</script>

第二种:遍历节点修改关键字

1.遍历元素节点

2.由于兼容问题删除chrome ff 下面的空白text节点

3.替换关键字

不足就是浏览器兼容,频繁操作节点影响速度

<script> 

 function keyLight(id, key, bgColor){

   var oDiv = document.getElementById(id),

       oChilds  = oDiv.childNodes,

       bgColor = bgColor || "red",

       Colorr = Colorr || "white",

       sKey = "<span style='background-color: "+bgColor+";color: "+Colorr+";'>"+key+"</span>",

       rStr = new RegExp(key, "g");

   for(var i =0; i<oChilds.length-1; i++){

     if(oChilds[i].nodeType == 3 && /\s/.test(oChilds[i].nodeValue)){  //删除空白的节点

       oChilds[i].parentNode.removeChild(oChilds[i]);

     }

      oChilds[i].innerHTML = oChilds[i].innerHTML.replace(rStr,sKey);  //替换key

   }

 }

 var key1 = keyLight('result', '{$eyou.field.keywords}');

 </script>



易优搜索功能关键高亮JS代码

注:红色部分为必须添加的代码!!!!!!  注意id


相关新闻

CopyRight 2006-2020 YCNH NETWORK , Inc. All Rights Reserved 专业互联网开发服务提供商-云创年华网络 服务热线:18030990768   蜀ICP备16001235号   网站地图
四川云创年华网络提供绵阳网站建设制作、成品模板、快速仿站、微信小程序开发等服务。  正规合法经营实体公司,可来人实地洽谈业务,营业执照查验:

18030990768

这里是内置钩子的前台碎片模板,支持标签的调用!