【问题标题】:Javascript search for string in selected elements and hide the html tag that contains that stringJavascript 在选定元素中搜索字符串并隐藏包含该字符串的 html 标记
【发布时间】:2018-11-16 16:50:07
【问题描述】:

我编写了一个简单的 javascript 代码来查找字符串是否存在于所选元素的 innerHtml 中,现在我想隐藏包含该字符串的元素,但我不确定如何获取标签 ID 或隐藏指定元素的内容.这是我的代码。

 function hideTemplateOption(collToHide, hideText) {
    let collection = document.getElementsByClassName("product_tr_cus");
    if(collectionContains(collection,"test")) {
        console.log("contains");
    } else {
        console.log("nope");
    }
  }
  function collectionContains(collection, searchText) {
    for (var i = 0; i < collection.length; i++) {
        if( collection[i].innerText.toLowerCase().indexOf(searchText) > -1 ) {
            return true;
        }
    }
    return false;
  }
  hideTemplateOption();

【问题讨论】:

  • 在您的collectionContains 函数中,您已经获得了元素 (collection[i]),因此您可以将其添加到其 classList。

标签: javascript html htmlcollection


【解决方案1】:

你可以做collection[i].style.display = 'none';或者更好的有条件地设置它:

function toggle(collection, searchText) {
  var found = false;
  for (var i = 0; i < collection.length; i++) {
      var item_found = collection[i].innerText.toLowerCase().match(searchText);
      collection[i].style.display = item_found ? '' : 'none';
      if (item_found) {
          found = true;
      }
  }
  return found;
}

let collection = document.getElementsByClassName("product_tr_cus");
document.querySelector('input').addEventListener('keyup', function(event) {
   toggle(collection, event.target.value);
});
<input/>
<ul>
  <li class="product_tr_cus">Foo</li>
  <li class="product_tr_cus">Bar</li>
  <li class="product_tr_cus">Baz</li>
  <li class="product_tr_cus">Quux</li>
</ul>

如果你想要相反的,它将隐藏具有字符串的节点,然后使用:

collection[i].style.display = item_found ? '' : 'none';

您可能还需要更好的函数名称。

【讨论】:

  • 您的解决方案会隐藏给定集合中的所有元素,即使我提供集合[i]
  • @WinithePooh 抱歉没有测试这个,检查更新,你需要使用match,我认为indexOf 仅用于数组,我从未见过它与字符串一起使用。
  • 我解决了我的问题,我将所有带有 product_tr_cus 的 div 放在一个具有相同类名的大 div 中。解决方案是首先选择集合,然后选择此集合中具有给定类的所有元素
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 2013-06-26
  • 2013-11-10
  • 2021-12-10
  • 2013-04-24
  • 2013-08-14
  • 2011-05-25
  • 2017-11-17
相关资源
最近更新 更多