使用纯JavaScript隐藏括号内的内容

时间:2013-07-18 14:22:48

标签: javascript

我想使用纯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>

4 个答案:

答案 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 );
    }
});