在JS中选择带有文本的div

时间:2017-11-14 14:34:31

标签: javascript html class select

我想修改一个带有特殊文本的div,就像这样。

<div>
<p>
A global issue
</p>
</div>

如何在不使用id或类的情况下在JS中获取它?并且只有带有“全球问题”文本的div。

有办法吗?

4 个答案:

答案 0 :(得分:1)

要定位div并将其设置为display: none,您可以运行:

// Pure JS
document.querySelector("div p").style.display = "none"
// w/jQuery
$('div p').hide();

如果您的HTML中有多个div p个标签,您还可以使用以下内容进行文字搜索:

$('div p:contains("A global issue")').css('display', 'none');

答案 1 :(得分:1)

您可以使用jquery:

$('div:contains("A global issue")').css('background-color', 'red');
<div>A global issue</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 2 :(得分:1)

如果您想使用简单的JavaScript解决方案,请参阅下面的代码段

首先,从页面

获取所有div

其次,将搜索文本存储在变量

第三,循环遍历所有div并找到包含文本的div,然后你可以用它做任何你想做的事。我向它添加了backgroundColor红色

&#13;
&#13;
var divs = document.querySelectorAll("div");
var myText = "A global issue";
var i;
for (i = 0; i < divs.length; i++) {
  if (divs[i].textContent.indexOf(myText) > 0 ) {
  divs[i].style.backgroundColor = "red";
  } 
}
&#13;
<div>
  <p>
    A global issue
  </p>
  <p>
    More text here
  </p>
</div>
<div>
  <p>
    Not a good text
  </p>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

let i=5;
let divs =Array.from( document.querySelectorAll('div > p')); // it returns array
divs[i].style.display= "none"; 

编辑:

for(let i=0;i<divs.length;i++){ if(divs[i].textContent==="some text"){ divs[i].style.display="none"; } }

如果要更改父节点,请执行divs[i].parentNode.style.display="none"