<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号 网站地图
四川云创年华网络提供绵阳网站建设制作、成品模板、快速仿站、微信小程序开发等服务。 正规合法经营实体公司,可来人实地洽谈业务,营业执照查验: