2011-12-21 15 views
2

私は、別のjavascript関数で要素を挿入することができる単純な古いhtmlで 'テンプレート'の並べ替えを作成しようとしています。Javascriptの置換 - htmlの文字列で動作しません

だから、私は

var string = "<div id='<@nameInsert>' style='padding: 2px;'>here's some text and stuff</div>"; 

そして私は私が使用している名前で< @nameInsert>を交換しようとしている機能でを持っている...

string.replace("/<@nameInsert>", "525"); 

しかし、それは動作しません。エスケープするもの、間違ったアイデア、あるいは何か?あなたが正規表現

string.replace(/<@nameInsert>/, "525"); 

を使用したいしかし、あなたの場合には、あなたが本当に正規表現を必要としない場合

+0

それは動作しません。確かに? http://jsfiddle.net/alfabravoteam/xLdQT/ – Alfabravo

答えて

2

は引用符を使用しないでください。単なる文字列を使用します。それは、このようにうまく動作私のため

string.replace("<@nameInsert>", "525"); 
+0

良い神の男 - まっすぐ、完了。どのようにそれは次に動作しますか? – waxical

0

を交換しようとしているので、ここでは

string=string.replace("<@nameInsert>", "525"); 

は例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script language="javascript"> 

    function test(){ 
    var string = "<div id='<@nameInsert>' style='padding: 2px;'>here's some text and stuff</div>"; 
    string=string.replace("<@nameInsert>", "525"); 
    alert(string); 
    } 

</script> 
</head> 
<body> 
    <input type="button" value="test" name="test" onclick="test()"> 

</body> 
</html> 
それは動作しません
3

です他の文字列には存在しない文字列。

2つの異なる交換方法を混在させていると思います。あなたは、文字列使用して置き換えることができます。

string.replace("<@nameInsert>", "525"); 

を、あなたは正規表現を使用して置き換えることができます。スラッシュで

string.replace(/<@nameInsert>/, "525"); 

部分は正規表現リテラルで、同じ結果を与える:

string.replace(new RegExp("<@nameInsert>"), "525"); 

グローバルフラグを指定できるので、最初のものだけでなく、すべての出現箇所を置き換えることができます。

string.replace(/<@nameInsert>/g, "525"); 
+0

ありがとうGuffa。 1つの問題は、これがタグ内のコンテンツでは機能しないと思われます。たとえば、「テキストを見つけて置き換える」などは機能しません。 – waxical

+1

@waxical: 'replace'メソッドは文字列にHTMLコードが含まれていると気にしません。タグ内のテキストは別々に処理されません。 'replace'メソッドは文字列を変更せず、新しい文字列を返します。戻り値を使用する必要があります: 'string = string.replace(/ text/g、 'woohaa!');'。 – Guffa

+0

ありがとうGuffa。私は結局そのビットも見つけました。 – waxical

0

スラッシュ(/)または引用符( ")を使用するかどうかは関係ありません。置換する文字列が1つのみであるからです。置換方法を理解していることを確認してください。既存の文字列を置き換えるのではなく、それを修正したコピーを返します。.. ので、あなたはこのようにそれを行うことができます。

string = string.replace(/<@nameInsert>/, "525"); 
関連する問題