在网页设计中,如何对用js做的树状导航进行搜索
最近在网页设计时,用js做了一个树状导航,但是因为导航中内容较多,想加入对导航内容的搜索,做成像chm那样的形式,如何做?...
最近在网页设计时,用js做了一个树状导航,但是因为导航中内容较多,想加入对导航内容的搜索,做成像chm那样的形式,如何做?
展开
展开全部
跟JS画出树形菜单一样,先找到root节点,然后循环root下的子菜单,如果子菜单下还有子菜单,则递归循环。
如:查询某个节点的名字(全字符匹配):
var root = document.getElementById("root");
getInnerText(roow);
function getInnerText(node, text){
var flag = false;
var cnodes = node.chindren;
var i = 0, len = cnodes.length;
var nowNode = null;
while(i < len){
nowNode = cnodes[i];
var hasChild = (nowNode.children.length > 0 ? true : false);
if(hasChild){
flag = getInnerText(nowNode, text);
}else{
if(nowNode.innerText === text){
flag = true;
/*找到需要的文字后要做的事情*/
break;
}
}
}
return flag;
}
如果需要做模糊匹配,nowNode.innerText === text修改成nowNode.innerText.indexOf(text) > -1就可以了。
如果需要显示所有模糊匹配的结果,那就去掉flag返回以及break跳出就行了。
如:查询某个节点的名字(全字符匹配):
var root = document.getElementById("root");
getInnerText(roow);
function getInnerText(node, text){
var flag = false;
var cnodes = node.chindren;
var i = 0, len = cnodes.length;
var nowNode = null;
while(i < len){
nowNode = cnodes[i];
var hasChild = (nowNode.children.length > 0 ? true : false);
if(hasChild){
flag = getInnerText(nowNode, text);
}else{
if(nowNode.innerText === text){
flag = true;
/*找到需要的文字后要做的事情*/
break;
}
}
}
return flag;
}
如果需要做模糊匹配,nowNode.innerText === text修改成nowNode.innerText.indexOf(text) > -1就可以了。
如果需要显示所有模糊匹配的结果,那就去掉flag返回以及break跳出就行了。
更多追问追答
追问
js不懂,树状图也是从网站http://www.jyeoo.com/math/ques/search拷过来的,能否给出详细的代码?谢谢啦
追答
你需要做成什么样子?CHM那样的模糊查询,然后列举出匹配的项?还是其他什么样子。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询