我想使用纯JavaScript来隐藏文档中括号内的所有内容。例如,这个:
Sometext [info]
将被替换为:
Sometext
使用jQuery我可以用:
<script type="text/javascript">
jQuery(document).ready(function(){
var replaced = jQuery("body").html().replace(/\[.*\]/g,'');
jQuery("body").html(replaced);
});
</script>
答案 0 :(得分:2)
The document
's DOMContentLoaded
event会在您传递给jQuery(document).ready(...)
的回调的同时触发。
您可以通过document.body
而非jQuery(“正文”)访问网页正文,并使用the .innerHTML
property代替jQuery's .html()
method修改HTML。
document.addEventListener("DOMContentLoaded", function(event) {
var replaced = document.body.innerHTML.replace(/\[.*\]/g,'');
document.body.innerHTML = replaced;
});
答案 1 :(得分:1)
如果使用document.body.innerHTML替换,它将替换[]之间的所有内容,甚至是输入名称之类的有效内容。所以我认为你需要的是获取所有的文本节点,然后对它们运行正则表达式。 This question looks like it will do the trick.
function recurse(element)
{
if (element.childNodes.length > 0)
for (var i = 0; i < element.childNodes.length; i++)
recurse(element.childNodes[i]);
if (element.nodeType == Node.TEXT_NODE && /\S/.test(element.nodeValue)){
element.nodeValue = element.nodeValue.replace(/\[.*\]/g,'');
}
}
document.addEventListener('DOMContentLoaded', function() {
// This hits the entire document.
// var html = document.getElementsByTagName('html')[0];
// recurse(html);
// This touches only the elements with a class of 'scanME'
var nodes = document.getElementsByClassName('scanME');
for( var i = 0; i < nodes.length; i++) {
recurse(nodes[i]);
}
});
答案 2 :(得分:0)
您已有解决方案,请尝试"Sometext [info]".replace(/\[.*\]/g,'');
答案 3 :(得分:0)
基本上你在做什么
document.addEventListener('DOMContentLoaded', function() {
var replaced = document.body.innerHTML.replace(/\[.*\]/g,'');
document.body.innerHTML = replaced
});
这虽然是一个愚蠢的想法(为自己说)
让您的生活更轻松通过做这样的事情来改善你的网站
<p> Sometext <span class="tag-variable"> [info] </span> </p>
document.addEventListener('DOMContentLoaded', function(){
var tags = document.getElementsByClassName('tag-variable');
for( var i = 0; i < tags.length; i++) {
var current = tags[i]; // Work with tag here or something
current.parentNode.removeChild( current );
}
});