2012-04-24 4 views
2
が動作していない

可能性の重複:JavaScriptの文字列は、

<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li> 
:プリントアウトのためにこれを取得

var imgTitle = "fizz"; 
var imgTitle2 = "fizz"; 
var imgInfo = "buzz"; 
var imgSrc = "foo"; 
var liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML.replace("IMG_TITLE", imgTitle); 
liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML.replace("IMG_SRC", imgSrc); 
liHTML.replace("IMG_INFO", imgInfo); 

alert(liHTML); 


javascript replace function not working

ここ

は私のJSコードであります

(文字列置換呼び出しの前と同じです)。 Firebugのでは、私はというエラーを取得しています:

c.replaceは

関数ではない、このエラーいつでも実行上記のコードスニペットを取得します。 なぜこの文字列が機能しないのですか?ありがとうございます!

+1

あなたは戻っていません! :) – Bakudan

+6

文字列は不変です。そして、[MDN documentation](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/replace)は明確です:* "このメソッドは、呼び出されたStringオブジェクトを変更しません。新しい文字列 "*なぜあなたは' .replace() 'がインプレースで動作すると思いましたか? –

+1

ここで、 'IMG_TITLE2'のプレースホルダはありますか? –

答えて

11

はあなたがすべての行に新しい値を設定する必要が

liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
1

を試してみてください。

liHTML = liHTML.replace("IMG_SRC", imgSrc); 
1

置き換えられた値では何もしません。試してみてください:

var imgTitle = "fizz"; 
var imgTitle2 = "fizz"; 
var imgInfo = "buzz"; 
var imgSrc = "foo"; 
var liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
liHTML = liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML = liHTML.replace("IMG_SRC", imgSrc); 
liHTML = liHTML.replace("IMG_INFO", imgInfo); 

alert(liHTML); 
0

あなたは、変数liHTMLに結果を保存する必要があります。

liHTML = liHTML.replace("IMG_TITLE", imgTitle); 
liHTML = liHTML.replace("IMG_TITLE2", imgTitle2); 
liHTML = liHTML.replace("IMG_SRC", imgSrc); 
liHTML = liHTML.replace("IMG_INFO", imgInfo); 

// EDIT アップ遅くするビットを:D

0

あなたがそこに問題のカップルを持っています。まず、値を設定しないでください。置換するだけで新しい値が生成されます。 2つ目の問題は、あなたの場合、置き換えの代わりにreplace-allを使用するべきであるということです。

Replaceは、最初のインスタンスのみを置き換えます。

// Scope should have one var. Combine those vars. 
var imgTitle = "fizz", 
    imgTitle2 = "fizz", 
    imgInfo = "buzz", 
    imgSrc = "foo", 
    liHTML = "<li class='imgThumbLi ui-draggable' title='IMG_TITLE'><img class='image' src='IMG_SRC' title='IMG_TITLE'/><div class='imageInfo'><p class='detailTitle'>IMG_INFO</p></div></li>"; 

// Search and replace all dummy values. 
liHTML = liHTML.replace(new RegExp("IMG_TITLE", 'g'), imgTitle); 
liHTML = liHTML.replace(new RegExp("IMG_TITLE2", 'g'), imgTitle2); 
liHTML = liHTML.replace(new RegExp("IMG_SRC", 'g'), imgSrc); 
liHTML = liHTML.replace(new RegExp("IMG_INFO", 'g'), imgInfo); 

alert(liHTML);