我想修改一个带有特殊文本的div,就像这样。
<div>
<p>
A global issue
</p>
</div>
如何在不使用id或类的情况下在JS中获取它?并且只有带有“全球问题”文本的div。
有办法吗?
答案 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红色
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;
答案 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"