javascript - 如何根据 div 内容切换 div 的可见性

标签 javascript css google-chrome-extension

我一直在寻找类似的问题,但没有什么与我正在尝试做的完全匹配。

基本上,我正在开发一个简单的 chrome 扩展程序来获得乐趣/自学脚本如何与 chrome 交互。我有一个简单的脚本可以显示/隐藏给定的 div:

function showHide() {
    var e = document.getElementsByClassName("Line");

    for ( var i=0, len=e.length; i<len; ++i ){

        if(e[i].style.display == 'block')
            e[i].style.display = 'none';
        else
            e[i].style.display = 'block';
    }
}

如您所料,这会隐藏页面上“Line”的每个实例。下一步是尝试只隐藏包含特定字符串的 div。我一直在玩弄 'innerHTML.indexOf("Line")' 但到目前为止没有任何效果。大多数情况下,我收到此错误:Uncaught TypeError: Cannot read property 'indexOf' of undefined

直觉上,我正在尝试按照以下方式做一些事情:

if (e.innerHTML.indexOf("foo") != -1) { showHide(e); }

但我不确定如何将该条件与我正在使用的 showHide() 函数集成。我认为我在处理“if”语句时草率,但由于我对 javascript 很生疏,所以我主要通过反复试验来工作。

只是发帖在这里希望我能得到一些提示/方向。

最佳答案

您可以尝试遍历子节点并检查它们的内部 Html。查看代码段。

干杯!

var showHide = function(e) {
  e.style.display = (e.style.display === 'block') ? 'none' : 'block'
}

function toggle() {
  doStuff();
}

function eContainsNodeValue(element, foo){
  
  var childs = element.childNodes;
  for (j = 0; j<childs.length; j++){
    if (childs[j].innerHTML === foo)
      return true;
  }
  return false;
}

function doStuff() {
  var elements = document.getElementsByClassName("Line");
  for (i = 0; i< elements.length; i++){
    if (eContainsNodeValue(elements[i], 'foo'))
      showHide(elements[i]);
  }
}
#MyDiv {
  background-color: #6699ff;
}
.Line {
  display: block;
  background-color: #000000;
  color: #6699ff;
  width: 100%;
  text-align: center;
}
<body id="MyDiv">
  <div class="Line" style="display: block">
    <h4>I'm a line 1!</h4>
  </div>
  <div class="Line" style="display: block">
    <h4>I'm a line 2!</h4>
  </div>
  <div class="Line" style="display: block">
    <h4>I'm a line 3!</h4>
  </div>
  <div class="Line" style="display: block">
    <h4>I'm a line 4!</h4>
    <p>foo</p>
  </div>
  <div class="Line" style="display: block">
    <h4>I'm a line 5!</h4>
    <p>bar</p>
  </div>
  <div class="Line" style="display: block">
    <h4>I'm a line 6!</h4>
  </div>
  <button onclick="toggle()">Toggle foo bar</button>
</body>

关于javascript - 如何根据 div 内容切换 div 的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37873211/

相关文章:

javascript - chrome 扩展 - 使用内容脚本减少加载时间的最佳方法

javascript - IE 中的 .text 更新问题

javascript - 在mvc3中动态添加javascript函数

javascript - Flash 不与我的应用程序内的浏览器中的 Javascript 交互

html - CSS/HTML - div 内的 div 放置不正确

css - 如何使 flex 元素填充另一个相邻 flex 元素下的空白空间(包装)

javascript - 内容 JavaScript 未在内容脚本中执行

google-chrome - Chrome 扩展错误?CaptureVisibleTab 不适用于 CSS3

javascript - 我可以在更改页面时更改脚本中的类名吗

jquery - 如何更改 HTML 下拉菜单中的文本 "Goto"