2011-12-26 9 views
3

私は次のようにdiv要素内のテキストのブロックを持っている場合:JS文字をリンクに置き換えますか?

<div id='t1'> 
This is a great testing string. Tomorrow grass is green. 
</div> 

<a href='www.google.com'>g</a> 

がそれですように私は、Googleにリンクして文字「G」のすべてのインスタンスを置き換えたいですJavascript/jqueryでこれを行うことは可能ですか?

答えて

4

あなたは、単純な文字列置換を実行したい場合は、次のように行います:

var div = document.getElementById("t1"); 
div.innerHTML = div.innerHTML.replace(/g/g, "<a href='http://www.google.com'>g</a>"); 

あなたはより多くのダイナミクスを必要とする場合、例えば

例:値に応じてリンク、使用して単語を置き換えて別のURLでGまたはGを交換してください:

var div = document.getElementById("t1"); 
var mapper = { 
    g: "http://www.google.com", 
    G: "http://stackoverflow.com" 
}; 
div.innerHTML = div.innerHTML.replace(/[Gg]/g, function(fullmatch){ 
    return "<a href='" + mapper[fullmatch] + "'>" + fullmatch + "</a>"; 
}); 
+1

私は期間のすべてのインスタンスを置き換えるしたい場合は、私が」 d "/./g"を使用しますか? – David19801

+1

'.'は改行文字以外のすべての文字に一致するため(' 'RegExs 'ではドットが特別な意味を持つため)、' \ .'を使うべきです。 –

+1

'/ word/g'は' 'word''にマッチする正規表現です。 '/ g'は' replace'関数にマッチが見つからなくなるまでマッチを続行するように指示します(デフォルト動作は最初のマッチで停止する)。 –

2

jQueryは必要ありません。 /g/g

var t1 = document.getElementById('t1') 
t1.innerHTML = t1.innerHTML.replace(/g/g, '<a href="http://www.google.com/">g</a>') 

、最初gは、あなたが探しているものです。二gは意味グラムローブ(別名すべてを置き換え)

1
$('#t1').html($('#t1').text().replace(/g/g,"<a href='www.google.com'>g</a>")); 
+1

別の 'html'単語の代わりに' text'を使うことに注意してください。 **アドバンテージ**は、 '> 'が置き換えられても破られないということです。代わりに '>'として扱われ、最後にはまだ動作します。鉱山とロブのソリューションに欠けているもの。 **おそらく危険な欠点**は、「<スパムonmouseover = "..." >は、[XSS脆弱性](http://en.wikipedia.org/wiki/Cross-site_scripting)を導入する可能性があることです。結果のテキストはHTMLの ''として再エンキューされます。したがって、このコードは、元の入力が安全であることがわかっている場合にのみ使用してください。 –

関連する問題