我需要一个简单的脚本,在HTML中搜索特定代码,以便不显示。
我当前的代码仅替换整个文本。但如果一个人改变了一个项目,就找不到它。
有没有办法制作外卡,找到如下文字:
<a href="http://www.yourdomain.com">Thesite</a>
...如果找到
的话<*yourdomain*</a>
然后用空格替换整个<a href....>..</a>
我目前的代码是:
function checkLoad(){
if (document.readyState === "complete") {
document.body.innerHTML = document.body.innerHTML.replace(
'<p style="text-align:center;">My Website is <a href="http://www.redriv.com/" target="_blank">redriv</a></p>',
""
);
} else {
setTimeout('checkLoad();', 500)
}
}
答案 0 :(得分:1)
如果您希望仅基于href
,可以使用CSS规则:
a[href=http://www.yourdomain.com] { display: none; }
要查找包含href
的任何'yourdomain'
,请使用*=
:
a[href*=yourdomain] { display: none; }
如果你想包括对锚文本的检查,你需要JS:
function array(a) { return Array.prototype.slice.call(a); }
function check(a) { return /yourdomain/.test(a.textContent); }
function hide (a) { a.style.display = 'none'; }
var selector = 'a[href*=yourdomain]';
var anchors = array(document.getQuerySelector(selector));
anchors . filter(check) . forEach(hide);
不,不要将regexp用于此操作或任何其他HTML操作。
答案 1 :(得分:0)
RegEx将是最简单的解决方案,类似于<a.*yourdomain.*?\/a>
应该可以解决问题。它将删除其中包含yourdomain
的锚标记(作为属性和属性值 - 您没有指定所需的准确度,因此一切都会被触发)。在这里看到:
var html = '<a href="http://www.yourdomain.com">Thesite</a><a href="http://www.goodurlhere.com">Good URL</a><a href="http://www.anothergood.com">Good URL</a>';
var replaced = html.replace(/<a.*yourdomain.*?\/a>/, '');
document.getElementById('f').textContent = html;
document.getElementById('r').textContent = replaced;
&#13;
p {color: #777}
span {color: black}
&#13;
<p>Sample markup: <span id="f"></span></p>
<p>After RegEx: <span id="r"></span></p>
&#13;
故意使用单行样本标记,以便您可以看到它不会触及其他锚点。
所以你的完整代码是:
function checkLoad(){
if (document.readyState === "complete") {
document.body.innerHTML = document.body.innerHTML.replace(/<a.*yourdomain.*?\/a>/, '');
} else {
setTimeout('checkLoad();', 500)
}
}