搜索我的HTMLCollection是否包含某些文本

时间:2015-04-22 15:41:22

标签: javascript jquery search contains indexof

我有搜索功能,允许我搜索卧室,浴室,价格(高和低)的数量,我也试图告诉我,如果客户搜索单词,或单词,是记录。喜欢" River"什么的。

我一直在玩.contains()和.indexOf(),但无法工作。以下是我尝试的一些内容;

for (var i=0;i<x.length;i++)
{
var item = x[i];
if (item.getElementsByTagName("Bedrooms")[0].childNodes[0].nodeValue >= filterBed
&& item.getElementsByTagName("BathsTotal")[0].childNodes[0].nodeValue >= filterBath
&& item.getElementsByTagName("ListPrice")[0].childNodes[0].nodeValue >= filterPrL
&& item.getElementsByTagName("ListPrice")[0].childNodes[0].nodeValue <= filterPrH
&& item.getElementsByTagName("PublicRemarks").text().toLowerCase().contains(filterWord)
) { 

    && item.getElementsByTagName("PublicRemarks").indexOf(filterWord)

我已经测试了关键词的来历,我已经检查过它们是在搜索的记录中。

任何帮助实现这项工作将非常感激。

1 个答案:

答案 0 :(得分:1)

试试这个,因为你使用的是jQuery:

$(item).find("PublicRemarks").text().toLowerCase().indexOf(filterWord) > -1

$()会将item dom变成jquery对象。然后我们在其中找到PublicRemarks标签,提取文本,将其设为小写,并查找filterword。如果找不到过滤词,indexOf()将返回-1

只需javascript,这可以通过循环遍历集合来完成。可以创建一个函数来执行此操作以降低条件中的复杂程度......如下所示:

JSFiddle

function collectionContains(collection, searchText) {
    for (var i = 0; i < collection.length; i++) {
        if( collection[i].innerText.toLowerCase().indexOf(searchText) > -1 ) {
            return true;
        }
    }
    return false;
}