2017-09-02 17 views
-2

特定のフレーズをHTMLタグと照合するページ上のテキストのインスタンスを置き換える方法を考えています。コンテンツは同じままでなければなりません。stringを含むテキストをHTMLタグに置き換えるにはどうすればよいですか?

bold("Hello") 

上記のコードを置き換えてください:ここでは

<b>Hello</b> 

は、私が現在使用していますコードです:

node.data = node.data.replace('bold("','<b>'); 
node.data = node.data.replace('")','</b>'); 

これに伴う問題は、むしろ<b>を作成するよりもそれでありますタグを使用すると、<>がHTMLエンティティに変換されます。& lt; & gt;

また、")のすべてのインスタンスを</b>に置き換えることは実用的ではありません。

これを達成する最良の方法は何でしょうか。

私はこれに助けていただきありがとうございます、ありがとうございます!

+0

代わりにcreateElement()を使用する必要があります。 – iquellis

+0

これはあなたに役立つかもしれません:http://locutus.io/php/strings/htmlentities/ – z3nth10n

+0

'node.data'とは何ですか? – Keith

答えて

1

私はあなたが、文字通り、ページ上のすべてのテキストではなく、与えられた要素の内のすべてのテキストを意味するものではありませんと仮定します。 DucFilansは正規表現で、右のお金であり、私は少し完全な実用的なソリューションを提供するために彼の答え変更します:あなたはparserRules配列に正規表現パターンと置換ルールを定義することができ

var parserRules = [ 
 
    { pattern: /bold\("(.*?)"\)/g, replacement: '<b>$1</b>' }, 
 
    { pattern: /italics\("(.*?)"\)/g, replacement: '<i>$1</i>' } 
 
]; 
 

 
document.querySelectorAll('.parse').forEach(function(tag) { 
 
    var inner = tag.innerHTML; 
 
    parserRules.forEach(function(rule) { 
 
    inner = inner.replace(rule.pattern, rule.replacement) 
 
    }); 
 
    tag.innerHTML = inner; 
 
});
<div class='parse'> 
 
    <div>bold("Hello") world <p> Rose italics("pink") slow bold("!") </p> </div> 
 
    <div>bold("astiago") cheeeeeeese!</div> 
 
</div>

を、 'parse'クラスでマークされた要素はすべて解析されます。 1つの警告は、これがすべての下位要素を置き換えるということです。したがって、下位要素などに関連付けられたリスナーに頼っている場合は、同様にそれを処理する必要があります。

-1

Regexは交換の懸念を解決します。

var str = 'bold("Hello")'; 
 
var regex = /bold\("(.*?)"\)/; 
 
str = str.replace(regex, "<b>$1</b>"); 
 

 
console.log(str);

関連する問題