Javascript 如何筛选同时包含链接和纯文本的列表?

Javascript 如何筛选同时包含链接和纯文本的列表?,javascript,html,html-lists,html-entities,Javascript,Html,Html Lists,Html Entities,我有一个根据输入过滤列表的函数。它适用于城市的 ,乡村 ,城市 ,城市 ,乡村 ,城市 ,乡村 ,乡村 在同时键入链接和纯文本时,如何使筛选函数工作?(例如,当我键入圣卡洛斯市或圣卡洛斯市时,它在筛选结果中仅显示,城市 更新: 使用innerText的问题是过滤器无法解析/识别我需要包含在某些列表中的html实体: <li><a href='#.html'>Santa&#8209;Clara</a>, city</li> <li&

我有一个根据输入过滤列表的函数。它适用于城市的

  • ,乡村
  • ,城市
  • ,城市
  • ,乡村
  • ,城市
  • ,乡村
  • ,乡村
  • 在同时键入链接和纯文本时,如何使筛选函数工作?(例如,当我键入
    圣卡洛斯市
    圣卡洛斯市
    时,它在筛选结果中仅显示
  • ,城市
  • 更新: 使用
    innerText
    的问题是过滤器无法解析/识别我需要包含在某些列表中的html实体:

    <li><a href='#.html'>Santa&#8209;Clara</a>, city</li>
    <li><a href='#.html'>La&#160;Libertad</a>, village</li>
    <li><a href='#.html'>Santo Ni&#241;o</a>, village</li>
    
  • ,城市
  • ,乡村
  • ,乡村

  • 例如,键入
    la libertad
    不会显示
    la libertad
    ,因为它使用HTML实体
     ;
    (不间断空格)而不是“普通空格”。函数如何还能识别此类HTML实体?

    使用
    innerText
    来避免HTML标记

    函数过滤器列表(){
    var输入、滤波器、ul、li、a、i;
    输入=document.getElementById(“listSearch”);
    filter=input.value.toLowerCase();
    ul=document.getElementById(“列表1”);
    li=ul.getElementsByTagName(“li”);
    对于(i=0;i-1){
    李[i].style.display=“”;
    }否则{
    li[i].style.display=“无”;
    }
    }
    }
    var listFilter=document.getElementById(“listSearch”);
    如果(列表过滤器){
    listFilter.oninput=filterList;
    }
    
    测试页
    过滤器:
    
    • ,城市
    • ,乡村
    • ,城市
    • ,城市
    • ,乡村

    谢谢,这很有效,但我还需要html实体,如不间断连字符、不间断空格和一些列表条目中的特殊字符。请查看更新的演示。