Javascript 隐藏所有包含短语的div
我想隐藏(删除)所有包含特定字符串的Javascript 隐藏所有包含短语的div,javascript,jquery,html,browser,Javascript,Jquery,Html,Browser,我想隐藏(删除)所有包含特定字符串的。就像一个过滤器。想象一下,它具有浏览器插件的功能 基本上是任何 在div内的标记内,或 直接在div内部(但不是标签) 有没有关于如何最有效地做到这一点的想法?理想情况下,我想要一种让浏览器对此做出良好响应的方法,不仅隐藏div,而且以这样一种方式删除它,使页面没有大的空白 我真的不是非常流利的javascript,所以我想看看我是否可以在这里得到一些提示。(最好使用straight JS或JQuery?) 谢谢 首先,制定一个计划: 查找包含该短语的所有节
。就像一个过滤器。想象一下,它具有浏览器插件的功能
基本上是任何
祝你好运。从以下答案拼凑而成: 这对于jQuery来说相当简单,但您请求的是非jQuery,因此我将快速尝试:
function removeDivs(withString) {
var divs = document.getElementsByTagName("DIV");
for(var i = 0; i < divs.length; i++) {
div = divs[i];
if (div.style.display != "none" && div.innerHTML.indexOf(withString) > -1) {
div.style.display = "none";
}
}
}
函数移除IVS(带字符串){
var divs=document.getElementsByTagName(“DIV”);
对于(变量i=0;i-1){
div.style.display=“无”;
}
}
}
我注意到你说的是“短语在它们里面”,但没有具体说明你想找出短语在里面的程度。在嵌套div的情况下,这将尽可能地隐藏所有在其innerHTML中包含该短语的div。换句话说,由于innerHTML包含所有包含的div,因此任何包含包含短语的div的div也将被隐藏,以此类推
另一个注意事项是,这根本没有效率,因为它可能最终会冗余地隐藏不需要隐藏的div
如果我要这么做,我会使用jQuery并尝试获得更高效的东西……这将是重新发明轮子,而不是IMHO(除非有技术限制或浏览器限制阻止jQuery运行)。从以下答案中拼凑而成: 这对于jQuery来说相当简单,但您请求的是非jQuery,因此我将快速尝试:
function removeDivs(withString) {
var divs = document.getElementsByTagName("DIV");
for(var i = 0; i < divs.length; i++) {
div = divs[i];
if (div.style.display != "none" && div.innerHTML.indexOf(withString) > -1) {
div.style.display = "none";
}
}
}
函数移除IVS(带字符串){
var divs=document.getElementsByTagName(“DIV”);
对于(变量i=0;i-1){
div.style.display=“无”;
}
}
}
我注意到你说的是“短语在它们里面”,但没有具体说明你想找出短语在里面的程度。在嵌套div的情况下,这将尽可能地隐藏所有在其innerHTML中包含该短语的div。换句话说,由于innerHTML包含所有包含的div,因此任何包含包含短语的div的div也将被隐藏,以此类推
另一个注意事项是,这根本没有效率,因为它可能最终会冗余地隐藏不需要隐藏的div
如果我要这么做,我会使用jQuery并尝试获得更高效的东西……这将是重新发明轮子而不是IMHO(除非有技术限制或浏览器限制阻止jQuery运行)。试试我的
语法
$(selector).searchengine(textFilter,action,caseSensitive)
对于您的案例,请按以下方式调用它:
var myTxt="dfvdf...."
$('div').searchengine(myTxt,'remove',false);
如果您还想删除包含myTxt的所有
:
$('div,p').searchengine(myTxt,'remove',false);
如果要隐藏它而不是删除它,请执行以下操作:
$('div').searchengine(myTxt,'hide',false);
如果您想在此之后显示:
$('div').searchengine(myTxt,'show',false);
诸如此类
演示:试试我的
语法
$(selector).searchengine(textFilter,action,caseSensitive)
对于您的案例,请按以下方式调用它:
var myTxt="dfvdf...."
$('div').searchengine(myTxt,'remove',false);
如果您还想删除包含myTxt的所有
:
$('div,p').searchengine(myTxt,'remove',false);
如果要隐藏它而不是删除它,请执行以下操作:
$('div').searchengine(myTxt,'hide',false);
如果您想在此之后显示:
$('div').searchengine(myTxt,'show',false);
诸如此类
演示:如果你不想要jQuery的答案,你可能应该把它从问题标签中删除。事实上,我不确定我是想要还是不想要。我会把这部分作为我要求的一部分。但是谢谢-很好的观点。定义“短语”。这是一个直截了当的句子吗?或者可以将其分解为兄弟/后代元素,如
这是短语?它在外观上可能看起来像一个短语,但结构根本不能是线性的。啊,是的,好问题。如果短语被分成多个标记,我不确定该如何处理…所以我会说一个标记中只有字符串。如果你不想要jQuery答案,你可能应该将其从问题标记中删除。事实上,我不确定我是否这样做。我会把这部分作为我要求的一部分。但是谢谢-很好的观点。定义“短语”。这是一个直截了当的句子吗?或者可以将其分解为兄弟/后代元素,如这是短语?它在外观上可能看起来像一个短语,但结构根本不能是线性的。啊,是的,好问题。我不知道如果这个短语被分成多个标签,人们会怎么处理它…所以我会说只有一个标签中的字符串。你不能只传递任何strin