标签:tle 标签 调用 val var script 多个 case reg
问题描述:基于公司的内部框架来做项目,发现搜索结果页面有个Bug----当搜索关键词为小写的字母(如:d)时,调用框架的搜索方法,结果发现带有“D”和“d”的文章标题都能读取出来,可是大写的“D”的样式却并没有变色(如下图所示),搜索关键词为多个字母时,也有同样的问题。
既然内部的框架不能修改,那就修改JavaScript好了。
解决思路:找到关键词出现在标题中的位置,把标题中匹配的文字替换成带颜色样式的关键词就可以了。
代码:
//keyword 用户输入的关键词 var keyword = $("#keyword").val(); //replaceWord 标题中需要改变颜色的文字 var replaceWord; //清除关键字里的空格 keyword = keyword.replace(/\s+/g, ""); if(keyword) { //页面有很多个li标签,每个li的a标签里,都是搜索结果页的标题 $(".content ul li a").each(function () { //arr数组保存的是关键词出现在标题中的位置(有可能位置为多处,所以要用数组) var arr = []; var title= $(this).html(); //index方法区分大小写,所以先把标题和关键词都转换成小写,这样才方便查找关键词在标题中出现的位置 var pos =(title.toLowerCase()).indexOf(keyword.toLowerCase()); while (pos > -1) { arr.push(pos); pos = (title.toLowerCase()).indexOf(keyword.toLowerCase(), pos + 1); } var wordArr = []; for (var i = 0; i < arr.length; i++) { //replaceWord的值有可能不只是一个值(如:标题为“ABCaBCAbCABc”,关键字为abc时,需要替换的文字就是“ABC”,“aBC”,“AbC”,“ABc”) replaceWord = title.substr(arr[i], keyword.length); //wordArr存在的意义是为了确保wordArr数组的没有重复值,减少replace的次数 if (wordArr.indexOf(replaceWord) == -1) { wordArr.push(title.substr(arr[i], keyword.length)); $(this).html($(this).html().replace(new RegExp(replaceWord, ‘g‘), "<span style=‘color: #ff2a00‘>" + replaceWord + "</span>")); } } }); }
标签:tle 标签 调用 val var script 多个 case reg
原文地址:http://www.cnblogs.com/Alcesttt/p/7258085.html