2013-07-18 56 views
1

我想使用純JavaScript來隱藏文檔中方括號內的所有內容。例如,這樣的:使用純JavaScript隱藏括號內的內容

Sometext [信息]

將與此進行更換:

Sometext

使用jQuery我可以做到這一點:

<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
     var replaced = jQuery("body").html().replace(/\[.*\]/g,''); 
     jQuery("body").html(replaced); 
    }); 
</script> 

回答

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]); 
    } 
}); 
+0

是的。你是對的! – Andrei

+0

如何讓你的例子工作? – Andrei

+0

@Andrei已編輯,以便它能正常工作,並添加了代碼,以便它只碰到特定的節點,而不是文檔中的所有內容。 – miah

0

您已有解決方案,請嘗試"Sometext [info]".replace(/\[.*\]/g,'');

+0

Well Sometext [info]就是一個例子。它可以是任何東西 – Andrei

+0

我知道,我只是繼續你的例子:) – Marcelo

2

The document's DOMContentLoaded event將在您傳遞給jQuery(document).ready(...)的回調的同時觸發。

您可以通過document.body而不是jQuery(「body」)訪問頁面正文,並使用the .innerHTML property而不是jQuery's .html() method修改HTML。

document.addEventListener("DOMContentLoaded", function(event) { 
    var replaced = document.body.innerHTML.replace(/\[.*\]/g,''); 
    document.body.innerHTML = replaced; 
}); 
+0

這是核選項,它將刪除任何和所有[]包括有效的,如輸入名稱中找到的。查看我的答案,找出只能碰到文本節點的東西。 – miah

+0

這是的它的工作原理。我保證會拿起這個答案。但是,如果我希望這僅適用於類爲「scanME」的​​? – Andrei

+0

var cells = document.querySelectorAll('td.scanME')'會爲你查找這些元素,但與jQuery不同,標準的JavaScript DOM API不會讓你一次修改所有這些元素。你將需要編寫一個'for(var i = 0; i

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