本文实例讲述了JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法。分享给大家供大家参考,具体如下:
实现效果:
图一:
图二:
此例中输入的中文字符串“万万保重”,有三个字是多音字,所以alert对话框中显示的是多种读音的组合;
如何实现?
如何实现通过拼音首字母快速查找页面内的中文内容呢?
过程原理是这样的:例如要对一些人名进行快速查找,当页面加载完成后,对所有人名建立一个索引,生成拼音首字母与姓名的对应关系;然后监听键盘事件,当用户按下键盘时,根据键值得到按下的是哪个字母,然后遍历索引中是否存在相同的拼音首字母;
这里还实现了根据字母组合来查找的功能,原理是这样的:当用户按键时,我们记录下按键的时间,如果两个连续的按键间隔小于一秒,就认为是组合查询,把当前按键值加在之前的按键值之后,不多说了,上代码!
获取拼音首字母:
40869 || uni < 19968)
return ch; //dealWithOthers(ch);
//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母
return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)));
}
function mkRslt(arr){
var arrRslt = [""];
for(var i=0,len=arr.length;i
建立索引代码:
执行查找代码:
1000){
//延迟超过一秒,则重新计时
timezoneOffset = tz;
keyCache = key;
}else{
//延迟在1秒范围内,则累加筛选字符
keyCache += key;
}
//获取筛选内容长度
var keyLength = keyCache.length;
var word = ""; //记录符合条件的中文字词
//遍历索引,执行查找
for (var i = 0; i < nameList.length; i++){
//截取等长字符与筛选字母组合进行比较
if (nameList[i][0].substr(0,keyLength) == keyCache){
if (word == ""){
word += nameList[i][1];
//对查找结果高亮显示,第一个符合条件的结果要清除之前的高亮显示,所以这里第二个参数传递为:true
highlight(nameList[i][1].substr(0,keyLength),true);
}else{
word += " " + nameList[i][1];
highlight(nameList[i][1].substr(0,false);
}
}
}
//在div中显示筛选字母组合
var div = document.getElementById("divKeyCache");
if (div){
div.innerHTML = "筛选字母组合:" + keyCache;
}
}