【问题标题】:Hide a <div> without a specified string隐藏没有指定字符串的 <div>
【发布时间】:2012-12-07 00:57:34
【问题描述】:

所以,尽可能简单地说.. 如图所示,我有多个带有文本的 div:

<div id=1 style="position:relative"><font color=color>Hello Hello</font></div>
<div id=2 style="position:relative"><font color=color>Hello Goodbye</font></div>
<div id=3 style="position:relative"><font color=color>Goodbye Goodbye</font></div>

我想在页面的某处有一个搜索框,我可以在其中输入字符串,例如:“Hello”隐藏最后一个 div,“Hello Hello”隐藏最后两个 div,“Hello Goodbye”隐藏第一个最后,“Goodbye Goodbye”隐藏了前两个 div。输入不必区分大小写,但我希望您输入字符串的顺序很重要。

提前致谢! -小星星

PS:如果可能的话,我宁愿远离 JQuery。

【问题讨论】:

  • @adeneo 这是一个例子,我不想只包含随机颜色。另外,虽然我不是评判者,但如果您根本不打算提供帮助,为什么还要在此线程上发帖?

标签: javascript css search html


【解决方案1】:

HTML:

<input type="text" id="my_input">

Javascript:

document.getElementById('my_input').addEventListener('keyup', function () {
    var search_for = this.value;
    var divs = document.getElementsByTagName('div');
    Array.prototype.forEach.call(divs, function (div) {
       if (search_for && div.textContent.toLowerCase().indexOf(search_for.toLowerCase()) > -1) {
           div.style.display = 'none'; // to hide
       }
       else {
           div.style.display = 'block';
       }
    });
});​

【讨论】:

  • 如何在“var search_for = 'hello';”中得到“hello”被我放入 字段的任何字符串替换?我需要这个来实时更新。谢谢。
  • 抱歉,我以为你已经有办法了。我已更新我的代码以反映该要求。
  • 更新它以使用数组原型调用(因为元素集不是数组)并且还验证了输入有一个值(这可以防止在字段为空时隐藏所有内容)
  • 请注意,这也会在您键入时清除,但您是否需要它与 div 内容完全匹配?
  • 不,这是完美的。谢谢!
【解决方案2】:

W3C规范

var forEach = Array.prototype.forEach;    

document.getElementById('inputID').addEventListener('keyup', function( event ) {
    forEach.call(document.querySelectorAll('div'), function( div ) {
        if( div.textContent.split(/\s+/).indexOf( event.target.value ) > -1 ) {
            div.style.display = 'none';
        } else {
            div.style.display = 'block';
        }
    });
}, false);

演示:http://jsfiddle.net/FA2nj/

【讨论】:

  • 其中一个条件应该将显示设置为非无。否则看起来不错
  • 复制粘贴错误,您在这两种情况下都隐藏了它们!您可能应该将其设置为 .display="" 而不是阻止。
  • 我已经对此进行了测试: 并将#inputID 替换为“1”,但它似乎仍然不起作用。我可能做错了什么,就像我经常做的那样。你介意指出它可能是什么吗?谢谢
  • ID 和课程一样,不能以数字开头。另外,在 ID 周围添加引号
  • 我已按照您的指示进行操作,但运气不佳。我有: 和 document.addEventListener("search", function( event ),其余代码保持不变..
猜你喜欢
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多