javascript - 搜索我的 HTMLCollection 是否包含特定文本

标签 javascript jquery search contains indexof

我有特性搜索功能,可以让我搜索卧室数量、浴室数量、价格(高和低),并且我还试图让它告诉我客户搜索的词是否在记录。比如“河流”之类的。

我一直在使用 .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)

我已经测试了关键词是否通过,并且我已经检查它们是否在正在搜索的记录中。

任何帮助让这项工作正常进行的帮助将不胜感激。

最佳答案

试试这个,因为你正在使用 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;
}

关于javascript - 搜索我的 HTMLCollection 是否包含特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802519/

相关文章:

sql-server - 如何对 SQL Server 中的 IN 或列表进行 LIKE

javascript - 获取运行计数(在 Cognos Javascript 中)

javascript - Karma 自动测试大量结构相似的文件

php - PHP 中的 Mysql 全文搜索返回多个值

查询。 Fn.Function 导致其他函数失效?

javascript - jQuery 将 div 中的 div 附加到滚动窗口的底部

mysql - 如何构建即时搜索引擎? (具有排名/相关性)

javascript - 钛拾取器滚动首次出现滞后

javascript - 将 "beforeShowDay"与 Bootstrap-datepicker 一起使用

php - 如何在特定时间段自动运行PHP代码?