【问题标题】:Search if my HTMLCollection contains certain text搜索我的 HTMLCollection 是否包含某些文本
【发布时间】:2015-06-30 09:40:55
【问题描述】:

我有物业搜索功能,可让我搜索卧室数量、浴室数量、价格(高价和低价),我还试图让它告诉我客户搜索词是否在记录。比如“河”什么的。

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

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

非常感谢任何帮助使这项工作正常进行。

【问题讨论】:

  • getElementsByTagName 将返回一个没有 text()indexOf() 方法的 HTMLCollection...您的控制台应该显示未定义?
  • 好的。我已经尝试过使用和不使用 .text() ,因为我不知所措并且一直在尝试我能想到的一切。我的控制台确实显示未定义。我的文章的重点是我还没有得到它的帮助,希望得到帮助。

标签: javascript jquery search contains indexof


【解决方案1】:

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

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

$() 会将 item dom 转换为 jquery 对象。然后我们在其中找到PublicRemarks 标签,提取文本,将其设为小写,然后查找过滤词。如果没有找到过滤词,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;
}

【讨论】:

  • indexOf() 如果找不到单词,则返回-1,因此您应该使用$(item).find("PublicRemarks").text().toLowerCase().indexOf(filterWord) &gt; -1
  • 有没有办法让它检查所有的子节点?
  • 你必须解释你的意思。也许发布一个新问题并发布您的 DOM 以及您想要发生的事情。
  • @LeeGellie,实际上“检查”我以为你的意思是复选框。也许您的意思是让这段代码也查看“子节点”(嵌套?)。 .find() 实际上会查看所有“PublicRemarks”标签内的所有文本(在 item 内),无论嵌套多深。
  • 谢谢。这正是我想要的。谢谢。
猜你喜欢
  • 2018-03-25
  • 2013-12-13
  • 2018-06-17
  • 2023-03-16
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
相关资源
最近更新 更多